leetcode Construct Binary Tree from Inorder and Postorder Traversal
2015-10-03 17:23
399 查看
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
遇到二叉树问题最先想到的是递归解决。
使用 TreeNode * 引用,来保存暂时结果
Note:
You may assume that duplicates do not exist in the tree.
遇到二叉树问题最先想到的是递归解决。
使用 TreeNode * 引用,来保存暂时结果
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) { TreeNode *root=NULL; if(inorder.empty()) return root; sub(root,inorder,0,inorder.size()-1,postorder,0,postorder.size()-1); return root; } void sub(TreeNode *&root,vector<int> &inorder,int istart,int iend,vector<int> &postorder,int pstart,int pend){ if(istart>iend||pstart>pend){ root=NULL; return; } root=new TreeNode(postorder[pend]); int split; for(int i=istart;i<=iend;i++){ if(inorder[i]==postorder[pend]){ split=i; } } int leftnum=split-istart; //表示左子树的节点个数 TreeNode *l,*r; sub(l,inorder,istart,istart+leftnum-1,postorder,pstart,pstart+leftnum-1); sub(r,inorder,istart+leftnum+1,iend,postorder,pstart+leftnum,pend-1); root->left=l; root->right=r; } };
相关文章推荐
- URL::to() 与 URL::toRoute()
- C++学习笔记之RTTI(运行时类型识别)
- Java中单链表的实现
- 【设计模式】里氏代换
- andriod开发点滴(使用Bundle,Intent在Activity间传递map)
- mysql limit
- 1006. Sign In and Sign Out (25)
- 2015长春网络赛hdu5444Elven Postman搜索二叉树
- 大数据系统梳理
- [前端]JS时钟实例
- 2.Python深入_上下文管理器
- HDU5493 Queue【线段树】
- LA 4254 Processor 处理器 【二分 贪心 优先队列】
- c/c++面试常见题目
- Maven实战七
- Java数据结构与算法之数组排序——插入
- 1005. Spell It Right (20)
- Word详细教程一(解决word护眼设置,但有些字底色仍是白色的)
- Hbase0.98.8入门
- MBA职场:如何从技术人员变成管理大牛