已知中序遍历和任一顺序遍历重构二叉树

重建二叉树

http://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6

利用递归的思想完成树的重建,一个是递归截至条件:当传入list长度为0的时候停止递归;另一个是将一颗树分解成左边和右边两个部分分别递归;最后返回数就行了
class Solution:
# 返回构造的TreeNode根节点
def reConstructBinaryTree(self, pre, tin):
# write code here
if len(pre)==0:
return
root = TreeNode(pre[0])
for i in range(len(tin)): # 在中序中找到左右分割点
if tin[i] == root.val:
leftIndex =i
break
leftpre = pre[1:leftIndex+1] # 将pre和tin分别分成两个部分
rightpre = pre[leftIndex+1:]
lefttin = tin[:leftIndex]
righttin = tin[leftIndex+1:]
root.left = self.reConstructBinaryTree(leftpre,lefttin) # 递归
root.right = self.reConstructBinaryTree(rightpre,righttin)
return root

全部评论

相关推荐

11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
评论
4
收藏
分享
牛客网
牛客企业服务