java數據結構練習題-1

題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{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

相關文章
相關標籤/搜索