您的位置:首页 > 其它

【LeetCode】-Construct Binary Tree from Inorder and Postorder Traversal

2014-09-24 10:42 344 查看
Given inorder and postorder traversal of a tree, construct the binary tree.

Note:

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

/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {

private int getIndex( int[] nums, int element, int start, int end ){
for( int i=start; i<=end; i++ ){
if( element==nums[i] )
return i;
}
return -1;
}

private TreeNode createTree( int[] in_arr, int in_start, int[] post_arr, int post_start, int length ){
if( length<=0 )
return null;
TreeNode root = new TreeNode( post_arr[post_start+length-1] );
int index = getIndex( in_arr, post_arr[post_start+length-1], in_start, in_start+length );
int len = index - in_start;
root.left = createTree( in_arr, in_start, post_arr, post_start, len );
root.right = createTree( in_arr, index+1, post_arr, post_start+len, length-len-1 );
return root;
}

public TreeNode buildTree(int[] inorder, int[] postorder) {
if( inorder.length!=postorder.length )
return null;
return createTree( inorder, 0, postorder, 0, inorder.length );
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: