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

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

递归实现:
递归函数输入:二叉树的先序序列和中序序列;返回-、建好的二叉树的根节点。
算法思想:
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 }

【IT笔试面试题整理】给定二叉树先序中序,建立二叉树的递归算法的更多相关文章

  1. 【IT笔试面试题整理】删除无序链表中重复的节点

    [试题描述]定义一个函数,输入一个链表,删除无序链表中重复的节点 [参考代码] 方法一: Without a buffer, we can iterate with two pointers: &qu ...

  2. Java笔试面试题整理第六波(修正版)

    转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  3. Java笔试面试题整理第三波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51247785 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  4. Java笔试面试题整理第八波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51388516 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  5. Java笔试面试题整理第五波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51321498 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  6. Java笔试面试题整理第四波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  7. Java笔试面试题整理第二波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51200163 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  8. Java笔试面试题整理第一波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51151650 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  9. SDUT OJ 数据结构实验之二叉树四:(先序中序)还原二叉树

    数据结构实验之二叉树四:(先序中序)还原二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...

随机推荐

  1. 20155326刘美岑2016-2017-2《Java程序设计》第一周学习总结

    20155326刘美岑 2006-2007-2 <Java程序设计>第1周学习总结 教材学习内容总结 在老师的要求下我看了这门课的考察方式.这门课和以前上的课有些差别,成绩是由平时一点一点 ...

  2. PAT甲级 1128. N Queens Puzzle (20)

    1128. N Queens Puzzle (20) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The & ...

  3. linux 查看、关闭 ssh pts/n登录的用户

    1.查看登录用户: [root@TiaoBan- bin]# w :: up days, :, users, load average: 1.90, 1.75, 1.84 USER TTY FROM ...

  4. 使用UTL_HTTP时遭遇ORA-29273

    http://blog.itpub.net/8520577/viewspace-1295182/ 项目中需要使用utl_http访问webserivce.使用utl_http时报错ORA-29273. ...

  5. CentOS 7.2通过yum安装MairaDB 10.1

    CentOS 7.2自带的yum源中mysql已经被替换成了mariadb,然而却是5.5版本,匹配mysql5.5,想要使用mysql 5.7的特性需要mariadb 10.0或10.1版本,10. ...

  6. MySQL--Percona-XtraDB-Cluster 5.6安装笔记

    安装环境: 有三台干净的CentOS 6的服务器,IP配置为:192.168.166.169,192.168.166.170,192.168.166.171,准备搭建三节点的Percona XtraD ...

  7. Spark技术的总结 以及同storm,Flink技术的对比

    spark总结 1.Spark的特点: 高可伸缩性 高容错 基于内存计算 支持多种语言:java,scala,python,R 高质量的算法,比MapReduce快100倍 多种调度引擎:可以运行于Y ...

  8. WPF ListBox的进阶使用(二)

    项目中经常使用需要根据搜索条件查询数据,然后用卡片来展示数据.用卡片展示数据时,界面的宽度发生变化,希望显示的卡片数量也跟随变化.WrapPanel虽然也可以实现这个功能,但是将多余的部分都留在行尾, ...

  9. MVC+Nhibernate+spring.net(一)

    所用数据库是我之前所写的Nhibernate入门篇的数据库https://www.cnblogs.com/pandorabox/p/PandoraBox.html 第一步:创建一个mvc项目 第二步: ...

  10. 【BZOJ3238】 [Ahoi2013]差异(SAM)

    传送门 BZOJ 洛谷 Solution SA版本的 考虑可以建一个SAM? 那么接下来我们就考虑每一对点对之间的贡献了. 把这个式子化简一下就是无序点对之间的那啥(自己意会一下) 然后我们定义边权为 ...