二叉树(先序遍历)非递归
为什么80%的码农都做不了架构师?>>>
#include <iostream>
#include <stack>struct Node {int data;struct Node *left;struct Node *right;Node(int x) {data = x;left = NULL;right = NULL;}
};void PreOrder(struct Node *root)
{if (root == NULL) return;std::stack<struct Node *> s;s.push(root);while(!s.empty()) {struct Node *tmp = s.top();printf("%d ", tmp->data);s.pop();if (tmp->right) s.push(tmp->right);if (tmp->left) s.push(tmp->left);}
}void PreOrder2(struct Node *root)
{if (root == NULL) return;std::stack<struct Node *>s;struct Node *tmp = root;while(tmp != NULL || !s.empty()) {while (tmp != NULL) {printf("%d ", tmp->data);s.push(tmp);tmp = tmp->left;}if (!s.empty()) {tmp = s.top();s.pop();tmp = tmp->right;}}
}int main(int argc, char** argv)
{Node *root = new Node(1);root->left = new Node(3);root->left->left = new Node(2);root->left->right = new Node(1);root->left->right->left = new Node(1);root->right = new Node(-1);root->right->left = new Node(4);root->right->left->left = new Node(1);root->right->left->right = new Node(2);root->right->right = new Node(5);root->right->right->right = new Node(2);PreOrder(root);printf("\n");PreOrder2(root);return 0;
}
输出结果:
1 3 2 1 1 -1 4 1 2 5 2
1 3 2 1 1 -1 4 1 2 5 2
转载于:https://my.oschina.net/tsh/blog/862601
二叉树(先序遍历)非递归相关推荐
- 二叉树后序遍历(非递归)
原文地址为: 二叉树后序遍历(非递归) 二叉树的递归遍历算法就不用说了:在非递归算法中,后序遍历难度大,很多书上只给出思想或者几段无法直接调试的代码,甚至有些书上是错的,当时我在研究的过程中,就是按着 ...
- 二叉树后序遍历_二叉树后序遍历非递归实现
二叉树的后序遍历非递归实现是三种遍历实现里面最复杂的一种了. 后序遍历的顺序是左节点-右节点-根节点,因为二叉树每个节点只有指向子节点的指针而没有指向父节点的指针,因此我们需要一个额外的变量来记录是否 ...
- 二叉树先序遍历非递归遍历算法
/*二叉树的先序遍历非递归算法目标遍历的二叉树:1/ \2 4/ \3 5 待输出结果为1,2,3,5,41.首先得用上面定义的结构体把这颗树表示出来2.表示出这颗树后在调用二叉树的先序遍历非递归算法 ...
- 二叉树中序遍历非递归Java
问题来源与描述 问题来源:LeetCode 94,二叉树的中序遍历 思路 二叉树的中序遍历顺序是左,根,右. 使用递归比较简单: class Solution {public List<Inte ...
- 二叉树(中序遍历)非递归
为什么80%的码农都做不了架构师?>>> #include <iostream> #include <stack> /* run this progra ...
- 二叉树前序、中序、后序遍历非递归写法的透彻解析
前言 在前两篇文章二叉树和二叉搜索树中已经涉及到了二叉树的三种遍历.递归写法,只要理解思想,几行代码.可是非递归写法却很不容易.这里特地总结下,透彻解析它们的非递归写法.其中,中序遍历的非递归写法最简 ...
- 二叉树——中序遍历(递归/非递归)
中序遍历,即遍历顺序为:左节点.根节点.右节点. 二叉树节点: public class Node {public Node left;public Node right;public int val ...
- Java 二叉树后序遍历(递归/非递归)
Java 二叉树后序遍历(递归/非递归) 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次. 设L.D.R分 ...
- 二叉树中序遍历(递归法和迭代法(非递归法))——C++
声明:本文原题主要来自力扣,记录此博客主要是为自己学习总结,不做任何商业等活动! 二叉树的遍历有前序遍历.中序遍历.后序遍历和层次遍历,其中二叉树基本知识点可以参考博主上篇博客(二叉树基本知识点图文介 ...
- Java 二叉树中序遍历(递归/非递归)
Java 二叉树中序遍历(递归/非递归) 中序遍历 代码实现 递归方式 非递归方式 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访 ...
最新文章
- DevOps:怎么实现源代码注释和系统文档的自动化更新?
- 深入Vue - 源码目录及构建过程分析
- 栈的逆转(递归实现)
- https://www.unimelb.edu.au/
- 世界对一名颓废者的惩罚——SDOI2019R1游记
- mysql blob 导出_mysql blob导出文本解密 | 学步园
- C语言中三块“难啃的硬骨头”
- 软件工程复习提纲——第七章
- 无奈!《花木兰》《速度与激情9》等多部影片宣布撤档
- weblogic 12C集群环境下的session复制
- 买手机,是不是运行内存大,手机用久了也不卡?
- GIT命令行的一些基本操作
- 最佳牛围栏题解 二分答案
- 小程序canvas转base64方法 使用upng库 亲测没问题
- Android学习进阶路线导航线路(Android源码分享)
- ie8 html5上传,兼容IE8的file单文件上传(jquery.form+formdata)
- linux系统移植到arm芯片难吗,Linux操作系统怎么移植到ARM平台?
- java开发和安卓开发_Java开发和Android开发,有什么不同吗?
- 计算机专业职业生涯规划书结束语,职业生涯规划书结束语
- Win10(winser2019)关闭驱动数字签名方法