我看完二叉树先序遍历、中序遍历、后续遍历就试着解这题。本人对已有解法不知道的。提一句额外话,什么中序遍历,名字起的就不对。先出, 中出, 后出多好,主要是好在有中出。二叉树的遍历,不,几乎所有树的遍历都是大概这样的算法:
TreeWalk(pNode): if pNode has childs: then for each child do TreeWalk(child)
我的算法和大家的有点不一样,当然如果理解了先中后遍历,理解我这个真的很简单,我直接贴:
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # @param root TreeNode类 # @return int整型二维数组 # class Solution: def levelOrder(self , root ): # write code here res=[] if not root: return res #该函数获取当前节点的子节点数据,并保存到结果里 def getThisChild(level,pNode): if not pNode: return tmp=[] if pNode.left: tmp.append(pNode.left.val) if pNode.right: tmp.append(pNode.right.val) if len(res)>level: res[level]+=tmp else: res.append(tmp) def treeWalk(deep, parent): getThisChild(deep, parent) if not parent: return deep=deep+1 treeWalk(deep, parent.left) treeWalk(deep, parent.right) res.append([root.val]) treeWalk(1, root) res.pop() return res
可能有一点瑕疵,大晚上的我就懒的改了,过了就行。