我看完二叉树先序遍历、中序遍历、后续遍历就试着解这题。本人对已有解法不知道的。提一句额外话,什么中序遍历,名字起的就不对。先出, 中出, 后出多好,主要是好在有中出。二叉树的遍历,不,几乎所有树的遍历都是大概这样的算法:
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可能有一点瑕疵,大晚上的我就懒的改了,过了就行。

京公网安备 11010502036488号