首页 > 其他分享 >二叉树的遍历

二叉树的遍历

时间:2023-11-16 23:45:21浏览次数:32  
标签:node 遍历 TreeNode st 二叉树 push root result

先序遍历非递归
算法1
class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        stack<TreeNode*> st;
        vector<int> result;
        if (root == NULL) return result;
        st.push(root);
        while (!st.empty()) {
            TreeNode* node = st.top();                       // 中
            st.pop();
            result.push_back(node->val);
            if (node->right) st.push(node->right);           // 右(空节点不入栈)
            if (node->left) st.push(node->left);             // 左(空节点不入栈)
        }
        return result;
    }
};

算法2
class Solution { public:     vector<int> preorderTraversal(TreeNode* root) {         vector<int> res;         stack<TreeNode*> st;         TreeNode*p=root;         while(p!=nullptr||!st.empty())         {             if(p!=nullptr)             {                 res.push_back(p->val);                 st.push(p);                 p=p->left;             }else{                 p=st.top();                 st.pop();                 p=p->right;             }         }                 return res;     } };

 

 

 

标签:node,遍历,TreeNode,st,二叉树,push,root,result
From: https://www.cnblogs.com/laojiahuo/p/17837554.html

相关文章

  • 二叉树
    #include<stdio.h>#include<stdlib.h>//二叉树节点的定义typedefstructTreeNode{intdata;structTreeNode*left;structTreeNode*right;}TreeNode;//创建新节点TreeNode*createNode(intdata){TreeNode*newNode=(TreeNode*)malloc......
  • LeetCode之二叉树
    发现更多计算机知识,欢迎访问Cr不是铬的个人网站最近数据结构学到二叉树,就刷了刷力扣,写这篇文章也是辅助记忆。103二叉树锯齿形遍历要解出本道题,首先要会层次遍历。层次遍历我们都知道用一个队列去实现就行。但是力扣这里的输出时一个二维的vector,每一层的值在不同的列表里面......
  • 二叉树初步理解
    二叉树初步:代码如下,注释很详细。#define_CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstring>#include<stdlib.h>#include<stdio.h>#include<math.h>#include<iomanip>#include<ctype.h>#include<ctime>#inc......
  • 递归遍历树形结构,查找目标元素
    树形结构的数据,即源数据:constorigin={"id":"40953897304457339","name":"一级单位","children":[{"id":"52979376890839070","name":"二级单位1",&qu......
  • 实验九 图的创建与遍历
    实验时间:第11周实验目的:掌握图的邻接矩阵、邻接表两种存储结构,能够实现在任意一种存储结构上的创建和遍历两种基本操作实验要求:1、认真阅读和掌握教材上和本实验相关内容和算法(见P161~170)。2、上机将图的任意一种存储表示的创建和遍历(DFS和BFS至少实现一种)算法实现。3、实......
  • 【随手记】mybatis动态sql foreach遍历List<Map>问题
    使用mybatis时经常需要在xml里写动态sql,发现foreach标签使用的问题foreach标签使用当Mapper传参是List<Map<String,Object>集合的形式时,不能直接使用参数名,会找不到对应的参数。list类型的参数会特殊处理封装在map中,map的key就叫list所以collection属性值只能是"list"//m......
  • Map遍历删除元素的几种方法
    2哥 :3妹,今天是周末,又不用上班,干嘛看着不开心的样子啊?3妹:你没有看昨天的新闻吗,昨天国家痛失了两位重要人物。2哥:哎,看到了,生老病死,也是没有办法。唯愿逝者安息,生者坚强!我们能做的,就是更加坚强,好好学习,建设祖国!3妹:好吧。2哥:还记得我们之前学习的:list遍历时删除元素的方法 吗,那如......
  • 面试必刷TOP101:27、按之字形顺序打印二叉树
    题目题解importjava.util.*;/**publicclassTreeNode{*intval=0;*TreeNodeleft=null;*TreeNoderight=null;*publicTreeNode(intval){*this.val=val;*}*}*/publicclassSolution{/***代码中的类名、方......
  • Java文件处理(一):创建文件、遍历文件夹、删除文件/文件夹
    本篇以代码为核心,在实践中自学吧年轻人~非常好迭代作业,爱来自BUAAFile对象要进行文件处理肯定需要File类啦。File的实例是一个实例(?),但是可以链接到本地的文件、文件夹,并对它们进行操作。从下面的一些示例中可以看到,同一份本地文件可以拥有多个File对象;同时,构造一个File对象......
  • JavaScript使用JS从JSON获取信息并遍历输出到网页展示信息------前端
    遍历JSON获取数据<!DOCTYPEhtml><!--这是HTML的注释--><htmllang="en"id="myHtml"> <head> <!--这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码--> <metacharset="UTF-8"> <metaname="viewport"......