关关的刷题日记98 – Leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
给出二叉树的后根遍历和中根遍历,构造二叉树。
了解后根遍历和中根遍历的特点。
每次在后根遍历数组中最右边就是二叉树的根,然后去中根遍历数组中找到根,根左边的就是左子树,根右边的就是右子树,对于左子树和右子树采取同样的求法:去后根遍历数组中找根,利用中根遍历数组划分左右子树,递归求解。
class Solution {
public:
TreeNode * help(vector < int > & postorder, int
l1, int
r1, vector < int > & inorder, int
l2, int
r2)
{
if (l1 > r1)
return nullptr;
else
{
int
i;
TreeNode * root = new
TreeNode(postorder[r1]);
for (i=l2; i <= r2; ++i)
{
if (inorder[i] == postorder[r1])
break;
}
root->left = help(postorder, l1, l1 + i - 1 - l2, inorder, l2, i - 1);
root->right = help(postorder, l1 + i - l2, r1 - 1, inorder, i + 1, r2);
return root;
}
}
TreeNode * buildTree(vector < int > & inorder, vector < int > & postorder) {
return help(postorder, 0, postorder.size() - 1, inorder, 0, inorder.size() - 1);
}
};
人生易老,唯有陪伴最长情,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。