首页 > 其他 > 详细

Construct Binary Tree from Inorder and Postorder Traversal

时间:2015-06-20 15:37:51      阅读:106      评论:0      收藏:0      [点我收藏+]

Description:

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

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

Code:

 1 TreeNode * buildTree(vector<int>& inorder, int inBegin, int inEnd, vector<int>& postorder, int postBegin, int postEnd)
 2  {
 3     TreeNode*root =NULL;
 4 
 5     if (postEnd >= postBegin)
 6     {
 7         root = new TreeNode(postorder[postEnd]);
 8     
 9         int rootIndex = 0;
10         for (int i = inBegin; i <= inEnd; ++i)
11         {
12             if (inorder[i] == postorder[postEnd])
13             {
14                 rootIndex = i;
15                 break;
16             }
17         }
18         
19         if (rootIndex!=inBegin)
20         {
21             root->left = buildTree( inorder, inBegin, rootIndex-1, postorder, postBegin, postBegin+(rootIndex-inBegin)-1);
22         }
23         if (rootIndex!=inEnd)
24         {
25             root->right = buildTree(inorder, rootIndex+1, inEnd, postorder, postBegin+(rootIndex-inBegin), postEnd-1);
26         }
27     }
28     return root;  
29  }
30     TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
31       return buildTree(inorder, 0, inorder.size()-1, postorder, 0, postorder.size()-1);  
32     }

 

Construct Binary Tree from Inorder and Postorder Traversal

原文:http://www.cnblogs.com/happygirl-zjj/p/4590604.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!