关注
class TreeNode(object): def __init__(self,x): self.val = x self.left = None self.right = None class Solution(object): tree = None pre = [] post = [] end = [] def preorder(self,root): if not root: return self.pre.append(root.val) self.preorder(root.left) self.preorder(root.right) def postorder(self,root): if not root: return self.postorder(root.left) self.postorder(root.right) self.post.append(root.val) def endnode(self,root): if not root: return [] queue1 = [root] queue2 = [] while queue1: cur = queue1.pop(0) if not cur.left and not cur.right: self.end.append(cur.val) if cur.left: queue2.append(cur.left) if cur.right: queue2.append(cur.right) if queue1 == []: queue1 = queue2 queue2 = [] def build(self, sub_levelorder, sub_inorder): if sub_inorder == []: return None root_value = sub_levelorder[0] root = TreeNode(root_value) index = sub_inorder.index(root_value) left_sub_inorder = sub_inorder[:index] right_sub_inorder = sub_inorder[index + 1:] left_sub_levelorder,right_sub_levelorder = [],[] # 按照层次遍历,第一个出现的就是根节点,然后找到中序中根节点的位置,分成左右两个子树的中序。再根据这个中序的序列,找到左右子树层次遍历的序列 # 考试的时候这一步没做好,一直做不出来,看了@ningshixian的做法。 for each in sub_levelorder[1:]: if each in left_sub_inorder: left_sub_levelorder.append(each) else: right_sub_levelorder.append(each) root.left = self.build(left_sub_levelorder, left_sub_inorder) root.right = self.build(right_sub_levelorder, right_sub_inorder) return root def buildTree(self, levelorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: TreeNode """ if levelorder == [] or inorder == []: return None self.tree = self.build(levelorder, inorder)
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享

点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如何KTV领导 #
29556次浏览 231人参与
# 研究所笔面经互助 #
54891次浏览 393人参与
# 掌阅春招 #
87984次浏览 508人参与
# 软开人,秋招你打算投哪些公司呢 #
66531次浏览 708人参与
# 软件开发春招备战日记 #
57059次浏览 487人参与
# vivo求职进展汇总 #
167682次浏览 1020人参与
# 你最近一次加班是什么时候? #
31410次浏览 249人参与
# 生物制药/化工校招攻略 #
33637次浏览 264人参与
# 如何缓解入职前的焦虑 #
141277次浏览 1124人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
71961次浏览 535人参与
# 产品每日一题 #
28864次浏览 402人参与
# 考研人,我有话说 #
12513次浏览 246人参与
# 还记得你第一次面试吗? #
75359次浏览 1091人参与
# 上班苦还是上学苦呢? #
201027次浏览 1230人参与
# 你今年的平均薪资是多少? #
93941次浏览 460人参与
# 你遇到过哪些神仙同事 #
44806次浏览 418人参与
# TP-LINK工作体验 #
38386次浏览 786人参与
# 职场上哪些行为很加分? #
30468次浏览 723人参与
# 想给25届机械人的秋招建议 #
22376次浏览 201人参与
# 在职场上,你最讨厌什么样的同事 #
10516次浏览 123人参与
# 985本硕1个中小厂offer,摆烂or继续努力 #
100170次浏览 696人参与