Leetcode 之Construct Binary Tree(52)
2016-06-07 16:35
211 查看
//中序和后序 TreeNode *buildTree1(vector<int>& inorder, vector<int>& postorder) { return buildTree1(begin(inorder), end(inorder), begin(postorder), begin(postorder)); } template<typename InputIterator> TreeNode *buildTree1(InputIterator in_first, InputIterator in_last, InputIterator post_first, InputIterator post_last) { if (in_first == in_last)return nullptr; if (post_first == post_last)return nullptr; //后序最后一个为根结点 const auto val = *prev(post_last) auto root = new TreeNode(val); //查找根结点在中序的位置,返回的是迭代器 auto intRootPos = find(in_first, in_last, val); //得到根结点的左半部分 auto leftSize = distance(in_first, intRootPos); //递归构造,注意去掉根结点 root->left = buildTree(in_first, intRootPos, post_first, next(post_first, leftSize)); root->right = buildTree(next(intRootPos), in_last, next(post_first,leftSize), prev(post_last)); return root; }
View Code
相关文章推荐
- [GitHub]第六讲:开源项目贡献流程
- 数据结构实验之链表一:顺序建立链表
- Android程序报错:Unable to add window——token android.os.BinderProxy@431e65b8 is not valid
- 腾讯如何打造一款实时对战手游
- windows 10 安装 hexo 续
- 数据分析入门随笔
- OpenWrt添加LuCI的模块
- 公式编辑测试
- Linux安装配置Tomcat
- js call
- [GitHub]第六讲:开源项目贡献流程
- SpringMVC:JSON形式输出(基于Fastjson)
- Python调用C++底层库,互相传值问题
- html Div层的展开与收缩的特效源代码下载
- window远程连接Linux的工具
- [GitHub]第五讲:团队合作流程
- 优化算法——牛顿法(Newton Method)
- "Contains Duplicate II" and "Merge Sorted Array"
- 自定义圆形控件继承ImageView加载本地图片
- Java线程之Condition高效线程通信