二叉树的后续遍历

作者: 球球球球笨 | 来源:发表于2018-02-07 20:07 被阅读17次

整理一份代码,之后要熟练掌握

/**
 * Definition for binary tree
 * 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) {
        vector<int> v;
        postOrder(root, v);
        return v;
    }
    
    void postOrder(TreeNode *root, vector<int>& v) {
        if( root != NULL ) {
            postOrder(root->left, v);
            postOrder(root->right, v);
            v.push_back(root->val);
        }
    }
};


//后序遍历非递归写法

class Solution {
public:
    vector<int> postorderTraversal(TreeNode *root) {
        vector<int> v;
        if(root == NULL) return v;
        stack<TreeNode*> s;
        s.push(root);
        TreeNode* temp = NULL;
        while(!s.empty()) {
            temp = s.top();
            if(temp->left == NULL && temp->right == NULL) {
                v.push_back(temp->val);
                s.pop();
            }else {
                if(temp->right) {
                    s.push(temp->right);
                    temp -> right = NULL;
                }
                if(temp->left) {
                    s.push(temp->left);
                    temp -> left = NULL;
                }
            }
        }
        return v;
    }
};
//特别要注意入栈顺序

相关文章

  • 二叉树遍历

    请递归,非递归方式分别前序遍历,中序遍历,后续遍历二叉树

  • 二叉树相关算法

    二叉树定义 前序遍历(中序遍历、后续遍历只需要调整append的顺序即可) 层序遍历 二叉树的最大深度 对称二叉树...

  • 二叉树遍历java,非递归、层次。

    /** * 前序遍历 * 递归 */ /*** 前序遍历* 非递归*/ 后续遍历非递归 二叉树层次遍历基于java...

  • 二叉树的三种遍历(前序/中序/后序)

    参考博客 二叉树的非递归后续遍历

  • 算法精选题总结之二叉树类

    1.二叉树的中序遍历中序遍历的迭代方法中序遍历的递归方法2.二叉树前序遍历3.二叉树后续遍历4.二叉树的最近公共祖...

  • 剑指offer 面试题6:重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 解法:前序遍历:根左右中序遍历:左根右后续遍历:...

  • 二叉树(python实现)

    一、二叉树的几种遍历方式 1、前序遍历(根——>左——>右) 2、中序遍历(左——>根——>右) 3、后续遍历(左...

  • 二叉树的非前、中、后序遍历

    本篇文章介绍二叉树中除了前序、中序、后续遍历以外的其他一些遍历方式。 首先,还是定义树的节点如下 按层遍历二叉树 ...

  • 一般二叉树普通二叉树,前、中、后序遍历以及搜索 顺序存储二叉树将数组以树的思想标识,包括前、中、后续遍历 线索化二...

  • 二叉树的问题

    二叉树的前序遍历是:-+abc*de/f,后续遍历是:bad*c+f/e-,则层序遍历和中序遍历依次为: A. -...

网友评论

    本文标题:二叉树的后续遍历

    本文链接:https://www.haomeiwen.com/subject/rtiazxtx.html