广度优先搜索
class TreeNode:
def __init__(self,x):
self.value=x
self.left=None
self.right=None
#方法1:用队列实现广度优先遍历
class Solution:
def levelOrder(self,root):
if not root:
return
queue=[]
queue.append(root)
res=[]
while queue:
curnode=queue.pop(0)#根节点入队
res.append(curnode.value)
if curnode.left:
queue.append(curnode.left)
if curnode.right:
queue.append(curnode.right)
return res
pNode1=TreeNode(8)
pNode2=TreeNode(6)
pNode3=TreeNode(10)
pNode4=TreeNode(5)
pNode5=TreeNode(7)
pNode6=TreeNode(9)
pNode7=TreeNode(11)
pNode1.left=pNode2
pNode1.right=pNode3
pNode2.left=pNode4
pNode2.right=pNode5
pNode3.left=pNode6
pNode3.right=pNode7
s=Solution()
s.levelOrder(pNode1)
#方法2:递归实现
def levelOrder_2(root):
res=[]
def helper(root,level):
if not root:
return None
if len(res)==level:
res.append([])
res[level].append(root.value)
helper(root.left,level+1)
helper(root.right,level+1)
helper(root,0)
result=[]
for i in res:
result.extend(i)
return result
s.levelOrder(pNode1)