剑指offer面试题6 重建二叉树(java)
来源:互联网 发布:oa软件开发 编辑:程序博客网 时间:2024/05/27 09:45
注:(1)java中树的构建
(2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的
1 package com.xsf.SordForOffer; 2 3 import java.util.Arrays; 4 5 /*剑指offer第6个问题 6 根据前序和中序遍历来重建二叉树 7 */ 8 class BinaryTreeNode { 9 public int value;10 public BinaryTreeNode leftNode;11 public BinaryTreeNode rightNode;12 }13 14 class ConstructCore {15 /*16 * 输入二叉树的前序遍历和中序遍历结果,重建二叉树并输出头节点 ex:12473568,4721538617 */18 public BinaryTreeNode constructCore(int[] preorder, int[] inorder)19 throws Exception {20 21 if (preorder == null || inorder == null) {22 return null;23 }24 if (preorder.length != inorder.length) {25 throw new Exception("长度不一样-非法输入");26 }27 BinaryTreeNode root = new BinaryTreeNode();28 for (int i = 0; i < inorder.length; i++) {29 if (inorder[i] == preorder[0]) {30 // isHave = true;31 root.value = inorder[i];32 root.leftNode = constructCore(33 Arrays.copyOfRange(preorder, 1, i + 1),34 Arrays.copyOfRange(inorder, 0, i));35 root.rightNode = constructCore(36 Arrays.copyOfRange(preorder, i + 1, preorder.length),37 Arrays.copyOfRange(inorder, i + 1, inorder.length));38 }39 }40 41 return root;42 }43 44 public void lastOrderTraverse(BinaryTreeNode T) {45 if (T != null) {46 lastOrderTraverse(T.leftNode);47 lastOrderTraverse(T.rightNode);48 System.out.print(T.value);49 }50 }51 }52 53 public class Pro6Biconstruct {54 public static void main(String[] args) throws Exception {55 ConstructCore test = new ConstructCore();56 int[] pre = { 1, 2, 4 };57 int[] in = { 2, 1, 4 };58 BinaryTreeNode root = test.constructCore(pre, in);59 test.lastOrderTraverse(root);60 }61 }
0 0
- 剑指offer面试题6 重建二叉树(java)
- 剑指offer--面试题6:重建二叉树--Java实现
- 剑指Offer面试题6:重建二叉树 Java实现
- 【剑指offer Java】面试题6:重建二叉树
- 剑指Offer面试题6(Java版):重建二叉树
- 剑指Offer:面试题6——重建二叉树(java实现)
- 剑指Offer面试题6(Java版):重建二叉树
- 剑指offer面试题6:重建二叉树(Java实现)
- 剑指offer|面试题6:重建二叉树(Java实现)
- 剑指offer面试题6 重建二叉树(java实现)
- 《剑指Offer》面试题-重建二叉树
- 剑指offer--面试题6: 重建二叉树(树)
- 剑指offer-->面试题6 重建二叉树
- 【剑指offer】面试题6:重建二叉树
- 《剑指offer》面试题6:重建二叉树
- 剑指offer 面试题6 重建二叉树
- 剑指Offer:面试题6 重建二叉树
- 《剑指offer》面试题6:重建二叉树
- 剑指offer面试题5 从头到尾打印链表(c)
- 剑指offer面试题6 重建二叉树(c)
- 剑指offer面试题3 二维数组中的查找 (java)
- 剑指offer面试题4 替换空格(java)
- 剑指offer面试题5 从头到尾打印链表(java)
- 剑指offer面试题6 重建二叉树(java)
- golang接口
- Map俩种遍历方式
- Git 解决一个电脑多用户情况(win7)
- Springmvc注解注入的简单demo
- 剑指offer-面试题7:俩个栈实现队列(c)
- 延长电池续航时间--测量电池用量
- layout文件夹中activity_main.xml与fragment_main.xml文件的处理记录
- Javassist Enhancement failed