首页 > 其他分享 >二叉树的统一迭代法

二叉树的统一迭代法

时间:2023-04-02 15:49:03浏览次数:40  
标签:node right TreeNode sta nullptr 二叉树 push 迭代法 统一

class TreeNode
{
public:
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode():val(NULL),left(nullptr),right(nullptr){}
    TreeNode(int x):val(x),left(nullptr),right(nullptr){}
};

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) 
    {
        if(root != nullptr) sta.push(root);
        while(!sta.empty())
        {
            TreeNode *node = sta.top();
            if(node)
            {
                sta.pop();
                //是什么序遍历 就倒序push 需要注意的是 插入中间节点的时候要在后面插入一个空指针
                if(node->right) sta.push(node->right);
                sta.push(node);
                sta.push(nullptr);
                if(node->left) sta.push(node->left);
            }
            else
            {
                sta.pop();//弹出空指针
                node = sta.top();    // 重新取出栈中元素
                sta.pop();
                res.push_back(node->val); // 加入到结果集
            }
        }
        return res;
    }
private:
    stack<TreeNode*> sta;
    vector<int> res;
};

标签:node,right,TreeNode,sta,nullptr,二叉树,push,迭代法,统一
From: https://www.cnblogs.com/lihaoxiang/p/17280578.html

相关文章

  • 二叉树的前中后序遍历(非递归)
    classTreeNode{public:intval;TreeNode*left;TreeNode*right;TreeNode():val(NULL),left(nullptr),right(nullptr){}TreeNode(intx):val(x),left(nullptr),right(nullptr){}};classSolution{public:vector<int>preorderTra......
  • 统一异常处理
    在web项目开发中,不管是mapper层、service层还是controller层,都有可能发生异常。如果每个异常都单独处理,系统的代码耦合性高,工作量大,维护困难。SpringMVC能将所有类型的异常处理,从各层的各种处理过程中解耦出来,进行统一处理,既保证了相关处理过程的功能较单一,也实现了异常信息的......
  • day14| 94.二叉树的中序遍历;144.二叉树的前序遍历;145.二叉树的后序遍历
    94.二叉树的中序遍历 思路:1.找出重复的子问题这个重复的子问题是:先遍历左子树、再取根节点、最后遍历右子树2.确定终止条件当节点为空是,返回 代码如下:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,......
  • 代码随想录Day17-Leetcode110.平衡二叉树,257. 二叉树的所有路径,404.左叶子之和
    110.平衡二叉树题目链接:https://leetcode.cn/problems/balanced-binary-tree/一个显然但似乎不太高效的方法是:通过递归获取左右子树高度,判断差;然后递归判断左右结点;那么一个显然的改进就是后序遍历/***Definitionforabinarytreenode.*functionTreeNode(val......
  • php实现统一的curl请求
    php实现统一的curl请求functioncurl_request($url,$method='GET',$data=array(),$headers=array()){$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);//设置请求方法switch......
  • 二叉树中和为某一值的路径
    classSolution{public:vector<vector<int>>res;vector<int>path;voiddfs(TreeNode*root,intsum,intt){t+=root->val;path.push_back(root->val);if(root->left)dfs(root-&......
  • 数据结构之二叉树
    树是一种非线性数据结构,是由n(n>=0)个有限节点组成的一个具有层次关系的集合。树的逻辑结构看起来像一棵倒挂的树,根朝上,叶子朝下。树一般是递归定义的,每一棵树都可以认为是由根和其子树构成,且各个子树不相交。树树的相关概念节点的度:一个节点含有的子树的个数称为该节点的度;叶节......
  • SpringBoot微服务集成keycloak实现跨平台统一认证授权
    //项目架构微服务划分://auth认证微服务实现登录认证拦截,获取token//gateway网关微服务//user用户微服务用户权限管理//system系统微服务核心逻辑处理//xxx其他微服务//common模块//1、common模块引入keycloak认证相关依赖<properties><keyc......
  • LeetCode 94 二叉树的中序遍历
    LeetCode|94.二叉树的中序遍历给定一个二叉树的根节点root,返回它的中序 遍历。示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]提示:树中节点数目在范围[0,100]内-100<=Node.val<=100迭代实现:......
  • 有度即时通统一工作门户助力政企单位开启数字化办公新模式
    为了提高办公效率,许多政企内部都会采用数套以上的办公系统平台,但这些平台相互之间都是独立的,形成了信息孤岛。政企内部人员在使用的时候需要来回切换,很容易出现信息遗漏和处理不及时的情况,阻碍了政企内部办公效率的提升。因此,不少政企迫切需要一款能够整合内部已有系统的的数字化......