zoukankan      html  css  js  c++  java
  • 【面试题6】重建二叉树

    【题目描述】

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。

    【解决方案】

    首先理解前序遍历(PreOrder),中序遍历(InOrder),后序遍历(PostOrder)的区别,并能在纸上根据前两种遍历,写出后一种遍历,基本就能写出本题的代码,不赘述。

    我的代码实现,仅供参考:

     1         /// <summary>
     2         /// 根据前序遍历和中序遍历构建二叉树
     3         /// </summary>
     4         /// <param name="preOrder"></param>
     5         /// <param name="inOrder"></param>
     6         /// <returns></returns>
     7         public static BinaryTreeNode ConstructBT(
     8             int[] preOrder, int[] inOrder,
     9             int startPre, int endPre,
    10             int startIn, int endIn)
    11         {
    12             int rootValue = preOrder[startPre];
    13             int rootIndexIn = Array.IndexOf(inOrder, rootValue);
    14             int leftLength = rootIndexIn - startIn;
    15             int rightLength = endIn - rootIndexIn;
    16 
    17             BinaryTreeNode root = new BinaryTreeNode(rootValue);
    18 
    19             if(leftLength>0)
    20             { 
    21                 root.Left = ConstructBT(
    22                     preOrder, inOrder,
    23                     startPre + 1, startPre + leftLength,
    24                     startIn, rootIndexIn - 1);
    25             }
    26 
    27             if(rightLength>0)
    28             { 
    29                 root.Right = ConstructBT(
    30                     preOrder, inOrder,
    31                     startPre + leftLength + 1, endPre,
    32                     rootIndexIn + 1, endIn);
    33             }
    34 
    35             return root;
    36         }
  • 相关阅读:
    最全前端面试题
    经常犯的思维误区
    鸿蒙系统发布会
    前端面试题
    怎么做一个竖排文字?
    canvas-台球玩法
    canvas-自由落体球
    canvas-画一颗心
    canvas-学写字
    常用的65条正则表达式
  • 原文地址:https://www.cnblogs.com/HuoAA/p/4797937.html
Copyright © 2011-2022 走看看