举一反三

重建二叉树

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

前序+中序

class Solution:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, pre, tin):
        # write code here
        if len(pre)>0:
            root = TreeNode(pre[0])
            root_idx = tin.index(pre[0])
            root.left = self.reConstructBinaryTree(pre[1:1+root_idx],
                                                   tin[:root_idx])
            root.right = self.reConstructBinaryTree(pre[1+root_idx:],
                                                    tin[root_idx+1:])
            return root

后序+中序

class Solution1:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, post, tin):
        # write code here
        if len(post)>0:
            root = TreeNode(post[-1])#后序遍历的倒数第一个节点是根节点
            root_idx = tin.index(post[-1])
            root.left = self.reConstructBinaryTree(post[:root_idx],tin[:root_idx])
            root.right = self.reConstructBinaryTree(post[root_idx:-1],tin[root_idx+1:])
            return root

层序+中序

class Solution:
     def buildtree(self,level,mid):
        if len(level)>0:
            root=TreeNode(level[0])#根节点
            rootid=mid.index(level[0])
            midleft=mid[:rootid]#左子树包含的节点
            midright=mid[rootid+1:]#右子树包含的节点
            levelleft,levelright=[],[]
            for node in level:
                if node in midleft:
                    levelleft.append(node)
                if node in midright:
                    levelright.append(node)
            root.left=self.buildtree(levelleft,midleft)
            root.right=self.buildtree(levelright,midright)
            return root
全部评论

相关推荐

03-21 10:53
复旦大学 Java
大家好,我是@程序员花海,眼下 26 届春招、27 届暑期实习全面开启,后端卷到没边,AI Agent的岗位占主导,很多牛友在我的评论区留言,想让我出一份Agent学习路线。我特意去看了下,打开淘天的招聘页面,以校招为例,一眼望去全是AI相关的岗位,只能说之后绝大多数岗位都会快速推进AI的落地和实践。之前写过 Java 后端 3 个月抢救路线https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users,也收到了牛友们的强烈好评,这次专门给后端转 Agent做一套最少必要知识路线—— 不堆概念、不啃论文,只学面试必问、项目...
在职牛马didi:这篇路线整理得很系统,把后端知识映射到Agent体系这个思路特别实用。我自己也是从Java转做AI的,感触很深:工程底子扎实的人转Agent确实有优势,RAG和工具编排这些核心能力本质上都是后端逻辑的延伸。我们团队在做天猫的AI应用落地,方向跟你这篇路线里的企业级RAG和Agent系统很接近。暑期实习还在招AI应用研发工程师,JD可以参考看看跟你背景是否匹配:https://www.nowcoder.com/jobs/detail/440929?jobId=440929
软件开发投递记录
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

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