leetcode 145. 二叉树的后序遍历

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了leetcode 145. 二叉树的后序遍历脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

leetcode 145. 二叉树的后序遍历

 

 

方法1 递归解法:

左右根

代码

/**
 * DefinITion for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<int>resut;
    vector<int> postorderTraversal(TreeNode* root) {
        transverse(root);
        return resut;

    }
    void transverse(TreeNode * node)
    {
        if (node!=NULL)
        {

            if (node->left!=NULL)
            {
                transverse(node->left);
            }
            if (node->right!=NULL)
            {
                transverse(node->right);
            }
            resut.push_back(node->val);
        }
    }
};/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<int>resut;
    vector<int> postorderTraversal(TreeNode* root) {
        transverse(root);
        return resut;

    }
    void transverse(TreeNode * node)
    {
        if (node!=NULL)
        {

            if (node->left!=NULL)
            {
                transverse(node->left);
            }
            if (node->right!=NULL)
            {
                transverse(node->right);
            }
            resut.push_back(node->val);
        }
    }
};

方法2:迭代法

leetcode 145. 二叉树的后序遍历

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:

    vector<int> postorderTraversal(TreeNode* root) {
        stack<TreeNode*>S;//定义栈存放右子树
        vector<int>resut;
        TreeNode*Rt = root;//迭代根节点
        while(Rt || S.size())
        {
            while(Rt)
            {
                //先序:根左右
                resut.push_back(Rt->val);//访问当前节点的值
                S.push(Rt->left);//将左子树保存到栈中
                Rt = Rt->right; //访问迭代节点的右子树
            }
            Rt = S.top();S.pop();//S栈顶元素出栈
        }
        reverse(resut.begin(),resut.end()); //翻转先序遍历的结果得到后序遍历的结果
        return resut;
    }
};

 

脚本宝典总结

以上是脚本宝典为你收集整理的leetcode 145. 二叉树的后序遍历全部内容,希望文章能够帮你解决leetcode 145. 二叉树的后序遍历所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。