題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回node
代碼:this
package test;get
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<cend;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;
}
}
} io