【IT笔试面试题整理】给定二叉树先序中序,建立二叉树的递归算法
来源:互联网 发布:python视频教程在线 编辑:程序博客网 时间:2024/05/17 12:04
【试题描述】: 给定二叉树先序中序,建立二叉树的递归算法
其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,固根节点已可从先序序列中分离。在中序序列中找到 确定的根节点,根据中序遍历特性,在巾序序列中,根节点前面的序列即为左子树的中序遍历序列,根节点后面的即为右子树的中序遍历序列。由左右子树的中序序列长度,在该二又树的先序序列中即可找到左右子树的先序序列的分界点,从而得到二叉树的左右子树的先序序列。
递归实现:
递归函数输入:二叉树的先序序列和中序序列;返回-、建好的二叉树的根节点。
算法思想:
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 else10 {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 TreeNode26 {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 }
阅读全文
0 0
- 【IT笔试面试题整理】给定二叉树先序中序,建立二叉树的递归算法
- 【IT笔试面试题整理】给定二叉树,给每层生成一个链表
- 【IT笔试面试题整理】寻找二叉树两节点的最近的公共祖先
- 【IT笔试面试题整理】二叉树中和为某一值的路径--所有可能路径
- 【IT笔试面试题整理】判断一个二叉树是否是平衡的?
- 【IT笔试面试题整理】判定一棵二叉树是否是二叉搜索树-转
- 二叉树的一些经典笔试面试题整理
- 【IT笔试面试题整理】二叉树中和为某一值的路径--从根到叶子节点
- 【IT笔试面试题整理】二叉查找树后继节点和前驱节点查找 --转
- 【IT笔试面试题整理】 二叉树任意两个节点间最大距离
- 【IT笔试面试题整理】有序数组生成最小高度二叉树
- 【IT笔试面试题整理】二叉搜索树转换为双向链表
- 二叉树的IT面试题
- 【面试题】递归二叉树
- 先序中序建立二叉树的递归算法
- 数据结构算法面试题精选及整理-二叉树
- 二叉树的递归建立
- 二叉树的递归建立
- XSS漏洞手工检测
- 【IT笔试面试题整理】位操作
- maven------junit作用
- 【IT笔试面试题整理】链表
- 【IT笔试面试题整理】堆栈和队列
- 【IT笔试面试题整理】给定二叉树先序中序,建立二叉树的递归算法
- vuejs 中如何使用slot
- 【IT笔试面试题整理】二叉搜索树转换为双向链表
- 【IT笔试面试题整理】给定一个数组a[N]构造数组b [N]
- Android @人功能 -- MentionEditText
- Python模块: 命令行解析optionparser
- 【模板】替罪羊树
- Python正则表达式指南
- python map()