【力扣】[热题 HOT] 105.前序与中序遍历序列构造二叉树
发布日期:2021-05-10 06:34:03
浏览次数:18
分类:技术文章
本文共 1677 字,大约阅读时间需要 5 分钟。
1.题目
根据一棵树的前序遍历与中序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。 链接:2.思路分析
- 方法:递归
- 为什么用unordered_map?因为采用这个可以很快的找到中序遍历数字对应的下标
- 为什么要算出size?因为你是下标操作,所以每次递归构造的时候,需要给出左右子树的范围
- 构造根节点,然后递归的构造左子树,连接到根节点,右子树同理
- 注意:①执行函数时,需要进行判空操作
- ② 一定要返回,将所有的节点连接起来
- ③ mybuildTree函数的后四个参数都是下标
3. 代码展示
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */
class Solution { public: unordered_mapindex; TreeNode* mybuildTree(vector & preorder, vector & inorder, int preorder_left, int preorder_right, int inorder_left, int inorder_right) { if(preorder_left > preorder_right) return nullptr; int preorder_root = preorder_left; int inorder_root = index[preorder[preorder_left]]; int size = inorder_root - inorder_left; TreeNode* root = new TreeNode(inorder[inorder_root]); root->left = mybuildTree(preorder, inorder, preorder_left + 1, preorder_left + size, inorder_left, inorder_left + size);//inorder_root - 1); root->right = mybuildTree(preorder, inorder, preorder_left + size + 1, preorder_right, inorder_root + 1, inorder_right); return root; } TreeNode* buildTree(vector & preorder, vector & inorder) { int n = inorder.size(); for(int i = 0; i < inorder.size(); ++i){ index[inorder[i]] = i; } return mybuildTree(preorder, inorder, 0, n - 1, 0, n - 1); }};
转载地址:https://blog.csdn.net/weixin_43967449/article/details/115983322 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年09月05日 21时36分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
软件构造——接口
2019-05-24
软件构造实验二
2019-05-24
程序人生-Hello’s P2P
2019-05-24
程序人生-Hello’s P2P
2019-05-24
测试性能的折中
2019-05-24
申宝配资综述为什么会出现诱多回落
2019-05-24
申宝策略:上升期买龙头分歧
2019-05-24
申宝配资6.21盘面计划
2019-05-24
申宝6.21盘面交易策略!
2019-05-24
申宝配资解读下一批牛股会在哪个板块爆发?
2019-05-24
申宝策略随评:资金对题材板块攻击态度已分散
2019-05-24
申宝配资策略:连续3天弱反后,明天冲高兑现减仓
2019-05-24
申宝分析短线情绪分歧比较大
2019-05-24
申宝商场仍是非常健康的走势
2019-05-24
申宝简述今天的盘面仍然不差
2019-05-24
申宝配资总结工作板块继续是涨多跌少
2019-05-24
申宝简述混沌期,如何应对?
2019-05-24
申宝分析酒鬼酒是白酒中最确定的标
2019-05-24
申宝配资点评震荡整固,低吸为王
2019-05-24
申宝配资分析芯片股冲高回落
2019-05-24