题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回
代码:
package test;
class Solution2 {
private static int[] lp = {1,2,4,7,3,5,6,8};
private static int[] lc = {4,7,2,1,5,3,8,6};
private static int index = 0;
public Node findRoot(int cstart,int cend,Node node){
if(index == lp.length){
return node;
}
for(int i=cstart;i
if(lp[index] == lc[i]){
node = new Node(lp[index]);
index++;
node.setLeft(findRoot(cstart, i, node.getLeft()));
node.setRight(findRoot(i, cend, node.getRight()));
break;
}
}
return node;
}
public static void main(String[] args) {
Solution2 solution = new Solution2();
Node node = solution.findRoot(0, lc.length, null);
System.out.println(node);
}
class Node{
private Integer data;
private Node left;
private Node right;
public Node(Integer data) {
super();
this.data = data;
}
public Integer getData() {
return data;
}
public void setData(Integer data) {
this.data = data;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
}
}