java数据结构练习题-1

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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;
        }
    }
}  

转载于:https://my.oschina.net/u/3227593/blog/1578129

你可能感兴趣的:(java数据结构练习题-1)