二叉树的统一迭代遍历法

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

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

由于访问的节点与要处理的节点不一定一致,所以在访问节点后加入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;
    }


相关文章
|
7月前
leetcode94二叉树的中序遍历(迭代做法)
leetcode94二叉树的中序遍历(迭代做法)
50 0
|
2月前
6.2二叉树的迭代遍历
6.2二叉树的迭代遍历
29 1
|
2月前
|
存储
使用迭代代替递归
使用迭代代替递归
|
2月前
|
算法
递归和迭代详解
递归和迭代详解
02_二叉树的迭代遍历
02_二叉树的迭代遍历
|
7月前
|
IDE 开发工具
遍历思路与子问题思路:详解二叉树的基本操作(二)
这篇内容介绍了二叉树的基本操作,包括通过遍历和子问题思路来解决不同的问题。
39 0
遍历思路与子问题思路:详解二叉树的基本操作(二)
|
6月前
|
算法
数据结构和算法学习记录——认识二叉搜索树及二叉搜索树的查找操作(递归以及迭代实现-查找操作、查找最大和最小元素)
数据结构和算法学习记录——认识二叉搜索树及二叉搜索树的查找操作(递归以及迭代实现-查找操作、查找最大和最小元素)
58 0
|
7月前
遍历思路与子问题思路:详解二叉树的基本操作 (一)
这篇内容介绍了二叉树的基本概念和操作,包括二叉树的结构定义以及一些基本操作如前序遍历、中序遍历、后序遍历、获取树中节点个数等。
53 0
|
算法
用递归的思想实现二叉树前、中、后序迭代遍历
用递归的思想实现二叉树前、中、后序迭代遍历
70 1
|
7月前
|
存储
二叉树遍历(五-最终篇)
二叉树遍历(五-最终篇)