leetcode Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:程序员的发展趋势 编辑:程序博客网 时间:2024/06/10 14:11

Given inorder and postorder traversal of a tree, construct the binary tree.

Note:
You may assume that duplicates do not exist in the tree.

后序遍历的最后一个节点必为根节点,而中序遍历的根节点处的左半部分和右半部分必为左子树和右子树,根据这个性质递归即可,代码:

public TreeNode buildTree(int[] inorder, int[] postorder) {      if(inorder==null||inorder.length==0||postorder==null||postorder.length==0)          return null;    if(inorder.length==1) return new TreeNode(inorder[0]);    TreeNode root=new TreeNode(postorder[postorder.length-1]);    int index=0;    for(int i=0;i<inorder.length;i++){        if(inorder[i]==root.val){            index=i;            break;        }    }    root.left=buildTree(Arrays.copyOfRange(inorder,0,index),Arrays.copyOfRange(postorder,0,index));    root.right=buildTree(Arrays.copyOfRange(inorder,index+1,postorder.length),Arrays.copyOfRange(postorder,index,postorder.length-1));    return root;}

0 0
原创粉丝点击