前序和中序重建二叉树

来源:互联网 发布:宿迁网络问政政策 编辑:程序博客网 时间:2024/06/06 18:38

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。


public class Solution {        public TreeNode reConstructBinaryTree(int [] pre,int [] in) {                return find(pre, in, 0, pre.length - 1, 0, pre.length - 1);            }        public TreeNode find(int [] pre, int [] in, int preStart, int preEnd, int inStart, int inEnd){                if(preStart > preEnd) return null;        if(preStart == preEnd) return new TreeNode(pre[preStart]);        TreeNode node = new TreeNode(pre[preStart]);              int rootIndex;        for(rootIndex = inStart; rootIndex <= inEnd; rootIndex++){            if(pre[preStart] == in[rootIndex]) break;        }               int leftLength = rootIndex - inStart, leftPreEnd = preStart + leftLength ;        node.left = find(pre, in, preStart + 1, leftPreEnd, inStart, rootIndex - 1);        node.right = find(pre, in, leftPreEnd + 1, preEnd, rootIndex + 1, inEnd);        return node;             }}


0 0
原创粉丝点击