• 【IT笔试面试题整理】给定二叉树先序中序,建立二叉树的递归算法


    【试题描述】:  给定二叉树先序中序,建立二叉树的递归算法

          其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,固根节点已可从先序序列中分离。在中序序列中找到 确定的根节点,根据中序遍历特性,在巾序序列中,根节点前面的序列即为左子树的中序遍历序列,根节点后面的即为右子树的中序遍历序列。由左右子树的中序序列长度,在该二又树的先序序列中即可找到左右子树的先序序列的分界点,从而得到二叉树的左右子树的先序序列。


    递归实现:
    递归函数输入:二叉树的先序序列和中序序列;返回-、建好的二叉树的根节点。
    算法思想:
    1)若二叉树空,返回空;
    2)若不空,取先序序列第一个元素,建立根节点;
    3)在中序序列中查找根节点,以此确定左右子树的先序序列和中序序列;
    4)递归调用自己,建左子树;
    5)递归调用自己,建右子树。 

    【参考代码】

     1 public static TreeNode createBT(String pres, String ins)
     2     {
     3         int inpos = 0;
     4         TreeNode root;
     5         String leftPres, leftIns, rightPres, rightIns;
     6 
     7         if (pres.length() == 0 || ins.length() == 0)
     8             return null;
     9         else
    10         {
    11             root = new TreeNode(pres.charAt(0));
    12             while (ins.charAt(inpos) != root.value)
    13                 inpos++;
    14             leftPres = pres.substring(1, inpos + 1);
    15             leftIns = ins.substring(0, inpos);
    16 
    17             root.left = createBT(leftPres, leftIns);
    18             rightPres = pres.substring(inpos + 1, pres.length());
    19             rightIns = ins.substring(inpos + 1, ins.length());
    20             root.right = createBT(rightPres, rightIns);
    21         }
    22         return root;
    23     }
    24 
    25 class TreeNode
    26 {
    27     public char value;
    28     public TreeNode left;
    29     public TreeNode right;
    30 
    31     public TreeNode(char value)
    32     {
    33         this.value = value;
    34     }
    35 }
  • 相关阅读:
    asp.net2.0 Theme and Skin
    Microsoft Exchange Server 2010 介绍
    Visual Studio 2010 Team System 动手实验室
    WCF中的消息契约
    Windows Workflow Foundation实验01——Windows Workflow Foundation 快速入门(练习二)
    C#中Brush、Color、String相互转换
    VS自动生成有参构造函数并自动依赖注入插件
    C#集合已修改:可能无法执行枚举操作
    Docker安装后启动不了,报“参考的对象类型不支持尝试的操作”
    windows下安装Docker超全图文教程
  • 原文地址:https://www.cnblogs.com/WayneZeng/p/9290749.html
Copyright © 2020-2023  润新知