二叉树前序非递归遍历

简介: 二叉树前序非递归遍历二叉树前序非递归遍历
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
/*前序非递归de算法思想:
对于任意一个结点tmp:
a.若栈不空,弹出栈顶结点,如果栈顶指针tmp的右孩子存在则
将右孩子入栈,如果左孩子存在则将左孩子入栈
b.直到栈空位置,遍历结束
*/
class Solution {
//private:
  //  stack<TreeNode*> stk;    
public:
    vector<int> preorderTraversal(TreeNode* root) {
        stack <TreeNode*> stk;
        vector<int> out;
        if(!root) return out;
        TreeNode* tmp;
        stk.push(root);
        while(!stk.empty()) {
            tmp=stk.top();
            out.push_back(tmp->val);
            stk.pop();
            if(tmp->right){
                stk.push(tmp->right);
            }
            if(tmp->left){
                stk.push(tmp->left);
            }
        }
        return out;
    }
};
相关文章
|
24天前
|
Python
二叉树前中后序遍历
这段内容是关于二叉树的前序、中序和后序遍历的Python实现。`Solution`类包含三个方法:`preorderTraversal`、`inorderTraversal`和`postorderTraversal`,分别返回二叉树节点值的前序、中序和后序遍历列表。每个方法都是递归的,遍历顺序为:前序(根-左-右)、中序(左-根-右)、后序(左-右-根)。
14 4
|
6月前
|
存储 C++
非递归遍历二叉树
非递归遍历二叉树
34 0
二叉树的前序、中序和后序遍历
二叉树的前序、中序和后序遍历
|
JavaScript 前端开发 Java
二叉树的先序、中序、后序遍历
二叉树的先序、中序、后序遍历
106 0
二叉树的先序、中序、后序遍历
先序、中序、后序遍历确定唯一树
快速学习先序、中序、后序遍历确定唯一树
先序、中序、后序遍历确定唯一树
【C++】二叉树的遍历:前序、中序、后序、层序
【C++】二叉树的遍历:前序、中序、后序、层序
【C++】二叉树的遍历:前序、中序、后序、层序
15分钟精通二叉树,二叉树的先序,中序,后序,层次遍历顺序
🍀🍀🍀理解,掌握二叉树先序,中序,后序,层次四种遍历顺序
129 0
15分钟精通二叉树,二叉树的先序,中序,后序,层次遍历顺序
【小白学算法】8.二叉树的遍历,前序、中序和后序
【小白学算法】8.二叉树的遍历,前序、中序和后序
【小白学算法】8.二叉树的遍历,前序、中序和后序
二叉树中序非递归遍历
二叉树中序非递归遍历 二叉树中序非递归遍历
100 0
|
Java
二叉树面试题:前中序求后序、中后序求前序
在面试时,避免不了的会遇到一些数据结构的面试题,今天我们就来了解一下二叉树的经典面试题:
127 0