Construct binary tree from inorder and postorder traversal-p106--array, binary tree traversal

package tree;

public class p106 {
    private int index;
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        TreeNode root;
        index=postorder.length-1;
        root=getNode(inorder,postorder);
        return root;
    }

    public TreeNode getNode(int[] inorder, int[] postorder){
        if(inorder.length<=0){
            index ++;     // return null when the input is empty 
            ; 
        }
        if (inorder.length==1) return  new TreeNode(postorder[index]);        // only one node returns 
        TreeNode directly node= new TreeNode(postorder[index]);
         // find the position of index in inorder 
        int i,order =-1 ;
         for (i=0;i<inorder.length;i++ ){
             if (inorder[i]== postorder[index]){
                order=i;
                break;
            }
        }
        // Get the right subtree 
        int rightNode[]= new  int [inorder.length-1- order];
        System.arraycopy(inorder,order+1,rightNode,0,rightNode.length);
        index--;
        node.right = getNode(rightNode,postorder);
         // Get the left subtree 
        int leftNode[]= new  int [order];
        System.arraycopy(inorder,0,leftNode,0,leftNode.length);
        index--;
        node.left=getNode(leftNode,postorder);
        return  node;
    }

    public static void main(String argv[]){
        int []inorde={2,1};
        int []postorder={2,1};
        p106 temo=new p106();
        TreeNode root = temo.buildTree(inorder,mailorder);
    }
}



class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325286969&siteId=291194637