leetcode 105 从前序与中序遍历序列构造二叉树
2023-09-27 14:29:24 时间
从前序与中序遍历序列构造二叉树
高刷题
/**
* 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:
TreeNode* track_back(vector<int>& preorder, vector<int>& inorder , int left_p , int right_p , int left_i , int right_i )
{
if(right_p < left_p || right_i < left_i
|| left_p < 0 || left_i < 0
|| right_p >= preorder.size() || right_i >= inorder.size()) return nullptr;
TreeNode *node = new TreeNode(preorder[left_p]);
if(left_p == right_p && left_i == right_i) return node;
int tmp_i;
for(int i=left_i ; i <= right_i ; i++)
{
if(inorder[i] == node->val)
{
tmp_i = i;
break;
}
}
int size_left = tmp_i - left_i;
int size_right = right_i - tmp_i;
cout<<node->val<<' '<<size_left<<' '<<size_right<<endl;
node->left = track_back(preorder,inorder,
left_p+1,
left_p+1+size_left - 1,
left_i,
tmp_i -1 );
node->right = track_back(preorder,inorder,
left_p+1+size_left,
right_p,
tmp_i+1,
right_i);
return node;
}
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
return track_back(preorder,inorder,0,preorder.size()-1,0,inorder.size()-1);
}
};
相关文章
- Leetcode: Self Crossing
- leetCode 94.Binary Tree Inorder Traversal(二叉树中序遍历) 解题思路和方法
- LeetCode高频题:图像交并比IoU计算方法和手撕代码
- Leetcode 128. 最长连续序列(中等)
- [LeetCode]258. 各位相加
- LeetCode 144. 二叉树的前序遍历
- 113、【树与二叉树】leetcode ——538. 把二叉搜索树转换为累加树:递增数组视角右中左遍历(C++版本)
- 100、【树与二叉树】leetcode ——105. 从前序与中序遍历序列构造二叉树+106. 从中序与后序遍历序列构造二叉树(C++版本)
- 【LeetCode】172. Factorial Trailing Zeroes
- 【LeetCode】Add Two Numbers
- 【LeetCode】13. Roman to Integer (2 solutions)
- 【LeetCode】152. Maximum Product Subarray
- LeetCode——Remove Nth Node From End of List
- [LeetCode] 1008. Construct Binary Search Tree from Preorder Traversal 从先序遍历重建二叉搜索树
- [LeetCode] 971. Flip Binary Tree To Match Preorder Traversal 翻转二叉树以匹配先序遍历
- [LeetCode] 773. Sliding Puzzle 滑动拼图
- [LeetCode] Heaters 加热器
- [LeetCode] 145. Binary Tree Postorder Traversal 二叉树的后序遍历
- [LeetCode] 107. Binary Tree Level Order Traversal II 二叉树层序遍历之二
- [LeetCode] 102. Binary Tree Level Order Traversal 二叉树层序遍历
- leetcode算法144.二叉树的前序遍历