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

重建二叉树

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-20 18:18
是不是意味着秋招就完蛋了
花不开柳成荫:如果你是Java,是的
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务