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容易理解; 

    第二种解法也是尾递归

     

    代码:

    重建二叉树代码
  • 相关阅读:
    【js效果】密码的显示和隐藏
    【js效果】竖向折叠二级菜单
    【js效果】单行文字滚动(从左到右)
    mysql:查询排名
    init_bootmem_node
    bootmem_init_node
    for_each_node(node)
    build_mem_type_table
    __vet_atags
    asm-offset.h 生成
  • 原文地址:https://www.cnblogs.com/liguo-wang/p/9694291.html
Copyright © 2011-2022 走看看