[LeetCode] 106. Construct Binary Tree from Inorder and Postorder Traversal
来源:互联网 发布:欧洲杯决赛数据 编辑:程序博客网 时间:2024/06/05 11:36
Given inorder and postorder traversal of a tree, construct the binary tree.
class Solution {public: TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { return buildTree(inorder.begin(), inorder.end(), postorder.begin(), postorder.end()); }private: TreeNode* buildTree(vector<int>::iterator inbegin, vector<int>::iterator inend, vector<int>::iterator postbegin, vector<int>::iterator postend) { if (postbegin >= postend) return nullptr; postend--; int rootval = *postend; TreeNode *root = new TreeNode(rootval); auto mid = find(inbegin, inend, rootval); const int nleft = mid - inbegin; root->left = buildTree(inbegin, mid, postbegin, postbegin + nleft); root->right = buildTree(mid + 1, inend, postbegin + nleft, postend); return root; }};
// 使用hash优化了上面的find操作class Solution {public: TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { unordered_map<int, vector<int>::iterator> loc; for (auto it = inorder.begin(); it != inorder.end(); it++) loc[*it] = it; return buildTree(loc, inorder.begin(), inorder.end(), postorder.begin(), postorder.end()); }private: TreeNode* buildTree(unordered_map<int, vector<int>::iterator> &loc, vector<int>::iterator inbegin, vector<int>::iterator inend, vector<int>::iterator postbegin, vector<int>::iterator postend) { if (postbegin >= postend) return nullptr; postend--; int rootval = *postend; TreeNode *root = new TreeNode(rootval); auto mid = loc[rootval]; const int nleft = mid - inbegin; root->left = buildTree(loc, inbegin, mid, postbegin, postbegin + nleft); root->right = buildTree(loc, mid + 1, inend, postbegin + nleft, postend); return root; }};
阅读全文
0 0
- LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
- [Leetcode] 106. Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode --- 106. Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode]*106.Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode] 106.Construct Binary Tree from Inorder and Postorder Traversal
- Leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode#106. Construct Binary Tree from Inorder and Postorder Traversal
- Leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode *** 106. Construct Binary Tree from Inorder and Postorder Traversal
- 【leetcode】106. Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode-106.Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode - 106. Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode] 106. Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode] 106. Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode]106. Construct Binary Tree from Inorder and Postorder Traversal
- Leetcode-106. Construct Binary Tree from Inorder and Postorder Traversal
- 【leetcode】106. Construct Binary Tree from Inorder and Postorder Traversal
- LapSRN 超分辨率
- git中Everything up-to-date问题解决方案
- MySQL函数大全 及用法示例
- POJ1704:Georgia and Bob (NIM博弈 类似阶梯博弈)
- 决策树之ID3算法(转)
- [LeetCode] 106. Construct Binary Tree from Inorder and Postorder Traversal
- java整数和byte数组之间的转换
- SVN上传
- 线程安全总结
- 贪吃蛇-----小游戏
- 获取SessionFactory的工具类
- JavaScript Math 对象
- 自定义相机旋转拍照角度
- MySQL分组查询时出现错误SELECT list is not in GROUP BY ;this is incompatible with sql_mode=only_full_group_by