zoukankan      html  css  js  c++  java
  • 算法:重建二叉树


    * @Description 重建二叉树
    * @问题: 题目描述
    * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
    * 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回
    * @思路:
    一: 采用尾递归了,根据函数左子树,右子树来进行计算;
      1:判断极端情况,前序中序长度不同,或者都为零
      2:构造根节点的二叉树,找到根节点的i值,然后再根据根节点找到中序遍历的i值
      3:构建数组 ,分别储存相应的值;
    int[] preLeft int[] inLeft = int[] preRight int[] inRight
      4:对构造的数组分别进行赋值,位于根节点i左边的赋值pre加一赋值给PreLeft,根节点右边的赋值。
    二: 采用类似尾递的方法,通过直接尾递归的方法,更加的简洁,但是尾递归中startPre,endPre,startIn,endIn.bu容易理解; 

    第二种解法也是尾递归

     

    代码:

    重建二叉树代码
  • 相关阅读:
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    剑指 Offer 20. 表示数值的字符串
    剑指 Offer 51. 数组中的逆序对
    剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  • 原文地址:https://www.cnblogs.com/liguo-wang/p/9694291.html
Copyright © 2011-2022 走看看