已知中序遍历和后序遍历如何构造二叉树,需要代码模板
时间: 2023-03-12 08:12:00 浏览: 177
二叉树问题
使用中序遍历和后序遍历构造二叉树的代码模板如下:// 中序遍历序列和后序遍历序列构造二叉树
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder)
{
if (inorder.empty() || postorder.empty())
return nullptr; // 后序遍历的最后一个结点就是根结点
TreeNode* root = new TreeNode(postorder.back()); // 找到根结点在中序遍历中的位置
auto rootPos = find(inorder.begin(), inorder.end(), postorder.back()); // 构建左子树
vector<int> left_inorder(inorder.begin(), rootPos);
vector<int> left_postorder(postorder.begin(), postorder.begin() + left_inorder.size());
root->left = buildTree(left_inorder, left_postorder); // 构建右子树
vector<int> right_inorder(rootPos + 1, inorder.end());
vector<int> right_postorder(postorder.begin() + left_inorder.size(), postorder.end() - 1);
root->right = buildTree(right_inorder, right_postorder); return root;
}
阅读全文