二叉树的统一迭代遍历法

简介: 二叉树的统一迭代遍历法

访问到一个结点后就将其右中左压入栈中,中就是其本身,也是父节点的左或者右儿子

由于访问的节点与要处理的节点不一定一致,所以在访问节点后加入null空节点来对访问节点做标记

此代码是中序遍历 改下顺序即可变成其他遍历

vector<int> orderTraversal(TreeNode* root) {
        stack<TreeNode*> s;
        vector<int> result;
        if(!root) return result;
        else s.push(root);
        while(!s.empty()){
            TreeNode *curPtr = s.top();
            if(curPtr){
                s.pop();
/*  只需要改变他们的顺序即可决定是前序、后序还是中序
                if(curPtr->right) s.push(curPtr->right);  //右
                s.push(curPtr);  //中
                s.push(nullptr); //中
                if(curPtr->left) s.push(curPtr->left);    //左
*/
            }else{
                s.pop();
                curPtr = s.top();
                result.push_back(curPtr->val);
                s.pop();
            }
        }
        return result;
    }


相关文章
|
3月前
leetcode94二叉树的中序遍历(迭代做法)
leetcode94二叉树的中序遍历(迭代做法)
34 0
|
3月前
|
IDE 开发工具
遍历思路与子问题思路:详解二叉树的基本操作(二)
这篇内容介绍了二叉树的基本操作,包括通过遍历和子问题思路来解决不同的问题。
30 0
遍历思路与子问题思路:详解二叉树的基本操作(二)
|
3月前
遍历思路与子问题思路:详解二叉树的基本操作 (一)
这篇内容介绍了二叉树的基本概念和操作,包括二叉树的结构定义以及一些基本操作如前序遍历、中序遍历、后序遍历、获取树中节点个数等。
26 0
|
3月前
|
存储
二叉树遍历(五-最终篇)
二叉树遍历(五-最终篇)
|
算法
用递归的思想实现二叉树前、中、后序迭代遍历
用递归的思想实现二叉树前、中、后序迭代遍历
56 1
二叉树的遍历(递归And迭代)
二叉树的遍历(递归And迭代)
38 0
|
3月前
|
算法
每日一题——排序链表(递归 + 迭代)
每日一题——排序链表(递归 + 迭代)
|
算法 容器
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力(下
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力
74 0
|
算法 UED 容器
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力(上)
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力
107 0
|
存储 编译器
二叉树的递归遍历与迭代遍历(图示)
本文将讲述二叉树递归与迭代的相关知识。
108 0