输入描述:
二叉树的前序遍历列表和中序遍历列表
代码实现
class TreeNode:
def __init__(self,x,left,right):
self.val = x
self.left = left
self.right = right
重构二叉树
def constructTree(preorder,midorder):
if len(preorder) == 0:
return None
root_data = preorder[0]
i = midorder.index(root_data)
left = constructTree(preorder[1:i+1],midorder[:i])
right = constructTree(preorder[i+1:],midorder[i+1:])
return TreeNode(root_data,left,right)
层序遍历
def levelorder(root):
if root is None:
return []
res = []
queue = [root]
while queue:
level = []
for _ in range(len(queue)):
node = queue.pop(0)
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(level)
return res
京公网安备 11010502036488号