首页 > 其他 > 详细

重建二叉树

时间:2019-03-02 20:35:25      阅读:151      评论:0      收藏:0      [点我收藏+]

题目:

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。

 

解答:

 1 public class Solution {
 2 
 3     public static TreeNode reConstructBinaryTree(int[] pre, int[] in) {
 4         if(pre == null || in == null || pre.length != in.length) {
 5             return null;
 6         }
 7 
 8         return createTree(pre, 0, pre.length-1, in, 0, in.length-1);
 9     }
10 
11     private static TreeNode createTree(int[] pre, int preStart, int preEnd, int inStart, int inEnd) {
12         if(preStart > preEnd || inStart > inEnd) {
13             return null;
14         }
15 
16         TreeNode root = new TreeNode(pre[preStart]);
17         root.left = root.right = null;
18 
19         for(int i = 0; i <= inEnd; i++) {
20             if(pre[preStart] == in[i]) {
21                 root.left = createTree(pre, preStart+1,preStart+i-inStart, in, inStart, i-1);
22 
23                 root.right = createTree(pre, preStart+i-inStart+1, preEnd, in, i+1, inEnd);
24             }
25         }
26 
27         return root;
28     }
29 }

技术分享图片

 

重建二叉树

原文:https://www.cnblogs.com/wylwyl/p/10462658.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!