zoukankan      html  css  js  c++  java
  • 105. 从前序与中序遍历序列构造二叉树

      由前序排列和中序排列,返回一个二叉树

    收获:

      1.如果返回结果是树结构,那么需要返回根节点  

      2.在用递归构造一棵树的时候,结构都是:

        1)node = Treenode ( val )

        2)  node.left = helper( ) 

        3)  node.right = helper( )

      3. 判断base case的时候,不满足要返回None,可参考TreeNode的定义

        1)例如  if left > right : return None

      4.开心,自己借鉴108题的思路直接一遍通过

        

    代码:

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None

    from collections import defaultdict
    class Solution:
        def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
            
            def helper(in_left,in_right):
                if in_right<in_left or not preorder:
                    return None
                node = TreeNode(preorder[0])
                indexOfNode = inorder.index(preorder[0])
                if preorder:
                    del preorder[0]
                node.left = helper(in_left,indexOfNode-1)
                node.right = helper(indexOfNode+1,in_right)
                return node

            
            return helper(0,len(inorder)-1)
  • 相关阅读:
    jsp页面跳转的路径问题
    Hibernate简单的保存操作
    Hibernate中如何完成持久化类和数据库映射文件
    spring中IOC的简单使用
    对称的二叉树 --剑指offer
    二叉树的下一个结点 --剑指offer
    删除链表中重复的结点 --剑指offer
    链表中环的入口结点 --剑指offer
    字符流中第一个不重复的字符 --剑指offer
    表示数值的字符串 --剑指offer
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12643428.html
Copyright © 2011-2022 走看看