二叉树的统一迭代遍历法

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

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

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


相关文章
|
17小时前
leetcode94二叉树的中序遍历(迭代做法)
leetcode94二叉树的中序遍历(迭代做法)
23 0
|
16小时前
|
存储
二叉树遍历(五-最终篇)
二叉树遍历(五-最终篇)
|
17小时前
|
Python
如何实现一个高效的二叉搜索树(BST)?请给出时间复杂度分析。
本文介绍了使用AVL树实现高效二叉搜索树的方法,包括插入、删除和查找操作的Python代码。节点类包含键值、左右子节点和高度属性。插入和删除操作通过维护树的平衡(高度差不超过1)确保O(log n)的时间复杂度,查找操作同样具有O(log n)的时间复杂度。
12 4
|
17小时前
|
算法
每日一题——排序链表(递归 + 迭代)
每日一题——排序链表(递归 + 迭代)
|
9月前
|
算法
用递归的思想实现二叉树前、中、后序迭代遍历
用递归的思想实现二叉树前、中、后序迭代遍历
47 1
|
9月前
二叉树的遍历(递归And迭代)
二叉树的遍历(递归And迭代)
32 0
|
17小时前
篇一:二叉树-遍历终极版
篇一:二叉树-遍历终极版
|
11月前
|
算法 UED 容器
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力(上)
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力
86 0
|
11月前
|
算法 容器
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力(下
【算法入门&二叉树】从先中后序的遍历到用中后序列构造二叉树|如何抵挡递归法该死的魅力
61 0
|
12月前
|
存储 编译器
二叉树的递归遍历与迭代遍历(图示)
本文将讲述二叉树递归与迭代的相关知识。
86 0