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. 根据前序和后序遍历构造二叉树的主要内容,如果未能解决你的问题,请参考以下文章

889. 根据前序和后序遍历构造二叉树

树889. 根据前序和后序遍历构造二叉树

889. 根据前序和后序遍历构造二叉树(非递归)

怎么根据二叉树的前序,中序,确定它的后序

构造一棵二叉树,并分别输出其先序遍历、中序遍历和后序遍历的结果

请教,如何在知道中序和前序遍历的情况下,得到后序遍历的结果? 不需要程序,有个图就行。 谢谢。