889. 根据前序和后序遍历构造二叉树
Posted Debroon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了889. 根据前序和后序遍历构造二叉树相关的知识,希望对你有一定的参考价值。
889. 根据前序和后序遍历构造二叉树
题目
传送门:https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/
算法设计:深度优先搜索
class Solution
public:
int preIndex = 0, posIndex = 0;
TreeNode* constructFromPrePost(vector<int>& pre, vector<int>& post)
TreeNode* root = new TreeNode(pre[preIndex++]); // 构造根节点,前序遍历结果的第一个元素,更新前序遍历下一个位置
if (root->val != post[posIndex]) // 如果前序遍历的当前节点值 == 后序遍历的第posIndex个元素(左叶子节点),说明这条路径已经构造好
root->left = constructFromPrePost(pre, post); // 构造左子树
if (root->val != post[posIndex]) // 如果前序遍历的当前节点值 == 后序遍历的第posIndex个元素(右叶子节点),说明这条路径已经构造好
root->right = constructFromPrePost(pre, post); // 构造右子树
posIndex++; // 后序位置,构造好路径后+1
return root; // 返回当前节点,
;
以上是关于889. 根据前序和后序遍历构造二叉树的主要内容,如果未能解决你的问题,请参考以下文章