106. Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:数据比例图 编辑:程序博客网 时间:2024/04/28 17:34

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

Note:

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




后序的末尾元素为根,此元素在中序中的索引为index。

中序下次传入 [start,index-1] 、[index+1,end]

后序下次传入 [start,start+index-start_inorder-1] 、[end-end_inorder+index,end-1]

public TreeNode buildTree(int[] inorder, int[] postorder){int len=inorder.length;if(len==0)return null;return build(0, len-1, 0, len-1, inorder, postorder);}private TreeNode build(int inl,int inr,int pol,int por,int[] inorder,int[] postorder){if(pol==por)return new TreeNode(postorder[pol]);if(pol>por)return null;int num=postorder[por];int index=-1;for(int i=0;i<inorder.length;i++)if(inorder[i]==num){index=i;break;}TreeNode t=new TreeNode(num);t.left=build(inl, index-1, pol, pol+index-inl-1, inorder, postorder);t.right=build(index+1, inr, por-inr+index, por-1, inorder, postorder);return t;}


0 0
原创粉丝点击