标签:重构 binary inorder postorder
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 class Solution { public TreeNode buildTree(int[] inorder, int[] postorder) { if(postorder.length==0&&inorder.length==0){ return null; } TreeNode root=new TreeNode(postorder[postorder.length-1]); int begindex=0; for(int i=0;i<inorder.length;i++){ if(inorder[i]==postorder[postorder.length-1]){ begindex=i; break; } } int leftlen=begindex; int rightlen=inorder.length-begindex-1; int[] leftpost=new int[leftlen]; int[] leftino=new int[leftlen]; for(int i=0;i<begindex;i++){ leftpost[i]=postorder[i]; leftino[i]=inorder[i]; } root.left=buildTree(leftino, leftpost); int[] rightpost=new int[rightlen]; int[] rightino=new int[rightlen]; for(int i=0;i<rightlen;i++){ rightpost[i]=postorder[i+begindex]; rightino[i]=inorder[i+begindex+1]; } root.right=buildTree(rightino, rightpost); return root; } }
Construct Binary Tree from Inorder and Postorder Traversal
标签:重构 binary inorder postorder
原文地址:http://blog.csdn.net/u012734829/article/details/42265519