剑指Offer——通过先序和中序构建二叉树
2017-06-21 23:08
225 查看
import java.io.*; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if(pre.length == 0) return null; if(pre.length == 1) return new TreeNode(pre[0]); int k = pre[0]; TreeNode treeNode = new TreeNode(k); int pos = -1; for(int i = 0; i < in.length; ++i){ if(in[i] == k) { pos = i; break; } } //System.out.println(pos); TreeNode left = reConstructBinaryTree(Arrays.copyOfRange(pre, 1, 1 + pos), Arrays.copyOfRange(in, 0, pos)); treeNode.left = left; TreeNode right = reConstructBinaryTree(Arrays.copyOfRange(pre, pos+1, pre.length), Arrays.copyOfRange(in, pos+1, in.length)); treeNode.right = right; return treeNode; } public static void main(String[] args) { int[] pre = new int[] {1,2,4,7,3,5,6,8}; int[] in = new int[] {4,7,2,1,5,3,8,6}; Solution solution = new Solution(); TreeNode treeNode = solution.reConstructBinaryTree(pre, in); } public static void print1(TreeNode treeNode) { if(treeNode == null) return; System.out.print(treeNode.val + " "); print1(treeNode.left); print1(treeNode.right); } public static void print2(TreeNode treeNode) { if(treeNode == null)return; print2(treeNode.left); System.out.print(treeNode.val + " "); print2(treeNode.right); } } class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
相关文章推荐
- 【剑指offer】如何通过先序遍历与中序遍历重建二叉树
- 剑指offer刷题之c++实现的根据二叉树的前序和中序遍历重建二叉树
- 剑指offer-重建二叉树 由前序和中序遍历序列建树
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历
- 剑指offer_根据前序和中序确定二叉树
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历的结果,输出后序遍历结果。
- 剑指offer 重建二叉树-前序遍历和中序遍历重建
- <剑指offer 面试题7-1>构建二叉树以及实现遍历 Java
- 剑指offer--据前序和中序遍历重建二叉树
- Offer题6 根据前序和中序构建二叉树
- 【面试题】剑指Offer-6-根据前序和中序遍历重建二叉树
- 剑指offer 6---由前序遍历和中序遍历重建二叉树
- 剑指Offer: 二叉树的深度、平衡二叉树
- 通过二叉树的前序序列和后续序列构建二叉树,有问题带定位
- 剑指offer--面试题27:二叉树的镜像
- 剑指offer:重建二叉树
- 通过先序、中序和后序数组两两结合重构二叉树
- 【剑指Offer学习】【面试题60:把二叉树打印出多行】
- 剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
- 剑指offer 打印二叉树路径和