106 letcode - 重建二叉树

class Solution:
    """
    内存条里,有两个区域,堆和栈
    其中,栈是我们函数跳转的关键,顺序是先进后出;
    通过压栈出栈,可以实现递归。 
    《1》当到达递归终止条件时候,则开始返回。
        例如: 先序遍历二叉树中,每个节点都要执行三个操作   
        根  左  右 
            当对左子树进行遍历的时候呢,可能这个左子树里还有很多子树,所有会在左子树里进行压栈,当某个
            节点没有左右子节点时候出栈。
        1.1         1
                 2       3
             4     5   6   7
        遍历该数,顺序为根  左  右  
        >>1
        对 2  4  5 ,则
        >>2,4
        4 的左子树为空则,返回上一层,执行完根 左,继续执行5,则 2 4 ->5 
        >>5 
        5 的左右子树为空,则返回上层2 ,以2为根节点的树遍历完成,再向上返回一层递归,返回到以1为
        根节点的树
        接下来则遍历以1为根节点的右子树    3  6 7
        ......
        ......
        
        """
    def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
        index = {val:i for i,val in enumerate(inorder)}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值