JasonChang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 1 public class Solution {
 2     public TreeNode buildTree(int[] inorder, int[] postorder) {
 3         // IMPORTANT: Please reset any member data you declared, as
 4         // the same Solution instance will be reused for each test case.
 5         if(inorder == null||postorder == null||inorder.length == 0||postorder.length==0)
 6             return null;
 7         return buildTree(inorder, postorder, 0, inorder.length-1, 0 ,inorder.length-1);
 8     }
 9     
10     private TreeNode buildTree(int[] inorder, int[] postorder, int instart, int inend, int postart, int poend)
11     {
12         if(instart > inend)
13             return null;
14         TreeNode node = new TreeNode(postorder[poend]);
15         if(instart == inend)
16             return node;
17         int mid = 0;
18         for(int i = instart; i <= inend; i++)
19         {
20             if(inorder[i] == postorder[poend])
21             {
22                 mid = i;
23                 break;
24             }
25         }
26         node.left = buildTree(inorder, postorder, instart, mid - 1, postart, postart + (mid - 1 - instart));
27         node.right = buildTree(inorder, postorder, mid + 1, inend, poend + mid - inend, poend - 1);
28         return node;
29     }
30 }

 

posted on 2013-11-11 17:10  JasonChang  阅读(185)  评论(0编辑  收藏  举报