根据二叉树的先序遍历和中序遍历重建二叉树
来源:互联网 发布:数据备份的管理规范 编辑:程序博客网 时间:2024/04/29 04:00
题目:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
程序:
public class Solution {public static void main(String[] args) {int[] pre = {1,2,3,4,5,6,7};int[] in = {3,2,4,1,6,5,7};TreeNode root = reConstructBinaryTree(pre, in);print(root);}public static TreeNode reConstructBinaryTree(int [] pre,int [] in) { return construct(pre, in, 0, 0, pre.length - 1); } private static TreeNode construct(int[] pre, int[] in, int index, int l, int r) { int inIndex; if (index >= pre.length || (inIndex = indexOf(pre[index], in)) < l || inIndex > r) return null; TreeNode pNode = new TreeNode(pre[index]); pNode.left = construct(pre, in, index + 1, l, inIndex - 1); pNode.right = construct(pre, in, index + inIndex - l + 1, inIndex + 1, r); return pNode; } private static int indexOf(int target, int[] arr) { for (int i = 0; i < arr.length; i++) { if (target == arr[i]) return i; } return -1; } //节点 static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}public static void print(TreeNode p) {System.out.print(p.val + " ");if (p.left != null)print(p.left);if (p.right != null)print(p.right);}}
阅读全文
0 0
- 根据二叉树的先序遍历和中序遍历重建二叉树
- 根据先序和中序遍历重建二叉树
- 根据先序遍历和中序遍历重建二叉树的两种方法
- 根据二叉树的先序和中序遍历重建二叉树
- 1935. 二叉树重建(根据先序遍历和中序遍历重建二叉树并进行广度优先遍历)
- 根据先序遍历序列和中序遍历序列重建二叉树
- 根据先序遍历数列和中序遍历数列重建二叉树
- 根据二叉树的先序、中序遍历结果重建二叉树
- 根据二叉树的先序、中序遍历结果重建二叉树
- 根据二叉树的先序、中序遍历结果重建二叉树
- 剑指offer--重建二叉树[根据二叉树的先序、中序遍历结果重建二叉树]
- 根据二叉树的前序遍历和中序遍历的结果,重建二叉树
- 根据二叉树的前序遍历和中序遍历重建二叉树
- 根据先序和中序遍历重建二叉树java实现
- 七:重建二叉树(根据先序遍历(或者后序遍历)和中序遍历重建二叉树)
- 根据二叉树的先序遍历和中序遍历建立二叉树
- 根据二叉树的先序遍历和中序遍历重构二叉树
- 数组实现根据二叉树的先序遍历和中序遍历构造二叉树
- automaticallyAdjustsScrollViewInsets
- 如何在eclipse下的tomcat中更改项目访问url
- java-接口之运动员教练员综合案例
- Oracle数据库的知识点总结(PL/sql)
- Ansible部署Java
- 根据二叉树的先序遍历和中序遍历重建二叉树
- CSS隐藏元素 display visibility opacity的区别
- HTML5新特性与CSS基础
- P2P,UDP和TCP穿透NAT
- 第五次作业回顾
- 公共JS
- caffe运行中显示梯度信息
- Nginx安装 ./configure: error
- js改变cookie的值