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

    用一个map存储inorder的值和下标的对应关系,这样做的目的可以省略用for查找的时间,直接取preorder[p_start]的值对应在inorder中对应值的下标。

    inorder在主要是为了确定以preoder[p_start]为根的的左右子树的长度,便于下次的递归。

    边界是:p_start==p_end return null;

    递归的逻辑:

    root = new TreeNode(pre[pstart]);

    root.left = helper(preoder,p_start+1,p_start+left_num+1,inorder,i_start,i_mid,map); //这里下一次的的左子树的起点是p_start+1,终点的下一个结点是真实下标+1,即p_start+left_num+1.然后此时的中序遍历也需要写成左边界。

    root.right = helper(preoder,p_start+left_num+1,inorder,mid+1,i_end,map);

    return root;

  • 相关阅读:
    2-7
    2-6
    2-5
    2-4
    2-3
    2-1
    2-2
    1-1
    5-7
    第六章例6-1
  • 原文地址:https://www.cnblogs.com/kltsee/p/12885643.html
Copyright © 2011-2022 走看看