前序遍历

递归方式:

public static void pre(Node head) {if (head == null) {return;}System.out.println(head.value);pre(head.left);pre(head.right);

}

栈的方式:

public static void pre(Node head) {System.out.print("pre-order: ");if (head != null) {Stack<Node> stack = new Stack<Node>();stack.add(head);while (!stack.isEmpty()) {head = stack.pop();System.out.print(head.value + " ");if (head.right != null) {stack.push(head.right);}if (head.left != null) {stack.push(head.left);}}}System.out.println();
}

中序遍历

递归方式:

public static void in(Node head) {if (head == null) {return;}in(head.left);System.out.println(head.value);in(head.right);
}

栈的方式:

public static void in(Node cur) {System.out.print("in-order: ");if (cur != null) {Stack<Node> stack = new Stack<Node>();while (!stack.isEmpty() || cur != null) {if (cur != null) {stack.push(cur);cur = cur.left;} else {cur = stack.pop();System.out.print(cur.value + " ");cur = cur.right;}}}System.out.println();
}

后续遍历

递归方式:

public static void pos(Node head) {if (head == null) {return;}pos(head.left);pos(head.right);System.out.println(head.value);
}

栈的方式:

public static void pos(Node h) {System.out.print("pos-order: ");if (h != null) {Stack<Node> stack = new Stack<Node>();stack.push(h);Node c = null;while (!stack.isEmpty()) {c = stack.peek();if (c.left != null && h != c.left && h != c.right) {stack.push(c.left);} else if (c.right != null && h != c.right) {stack.push(c.right);} else {System.out.print(stack.pop().value + " ");h = c;}}}System.out.println();
}

有苦有乐的算法 --- 用栈和递归的方式实现二叉树的前序遍历、中序遍历、后序遍历相关推荐

  1. 有苦有乐的算法 --- 使用栈结构实现队列结构

    题目 栈实现队列 解析 两个栈,stack1,stack2 假如一组元素为[1,2,3,4,5], 先依次入stack1 在将stack1的所有数据出栈,在入stack2 注:stack1里的的数据一 ...

  2. LeetCode--144,94,145,102 二叉树的前序、中序、后序、层序遍历(递归,迭代,栈,队列)

    二叉树的前序.中序.后序.层序遍历(递归,迭代,栈,队列) 1. 二叉树的前序遍历 1.1 题目描述 1.2 题目分析 1.3 Python实现 2. 二叉树的中序遍历 2.1 题目描述 2.2 题目 ...

  3. 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)

    zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件:       ⑴有且仅有一个结点没有前驱 ...

  4. 【树】二叉树遍历算法(深度优先、广度优先遍历,前序、中序、后序、层次)及Java实现...

    [树]二叉树遍历算法(深度优先.广度优先遍历,前序.中序.后序.层次)及Java实现 目录 一.前序遍历 二.中序遍历 三.后序遍历 四.层次遍历 遍历的作用 二叉树是一种非常重要的数据结构,很多其它 ...

  5. 算法练习day10——190328(二叉树的先序、 中序、 后序遍历, 包括递归方式和非递归方式、找到一个节点的后继节点、二叉树的序列化和反序列化)

    1.实现二叉树的先序. 中序. 后序遍历, 包括递归方式和非递归方式 1.1 访问节点的顺序 节点访问顺序如下图所示: 访问顺序:1 2 4 4 4 2 5 5 5 2 1 3 6 6 6 3 7 7 ...

  6. 左神算法:分别用递归和非递归方式实现二叉树先序、中序和后序遍历(Java版)

    本题来自左神<程序员代码面试指南>"分别用递归和非递归方式实现二叉树先序.中序和后序遍历"题目. 题目 用递归和非递归方式,分别按照二叉树先序.中序和后序打印所有的节点 ...

  7. java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...

    前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...

  8. 二叉树 BinaryTree (先序、中序、后序遍历 节点查找、插入、删除 完整类) Java数据结构与算法

    二叉树 BinaryTree (先序.中序.后序遍历 节点查找.插入.删除 完整类) Java数据结构与算法 源代码: view plain /** * * @author sunnyykn */ i ...

  9. 【数据结构笔记10】二叉树的先序、中序、后序遍历,中序遍历的堆栈/非递归遍历算法,层序遍历,确定一个二叉树,树的同构

    本次笔记内容: 3.3.1 先序中序后序遍历 3.3.2 中序非递归遍历 3.3.3 层序遍历 3.3.4 遍历应用例子 小白专场:题意理解及二叉树表示 小白专场:程序框架.建树及同构判别 文章目录 ...

最新文章

  1. 第一本用机器生成的书籍由施普林格•自然出版
  2. Windows API实现窗口居中
  3. java cell报错_有一个小小点问题,现在我想从eclipse上读取Excel表
  4. 荷兰服务器适用于哪些用户?
  5. 06_Dart异常处理
  6. 引领三消新模式 《梦幻花园》商业化分析
  7. REST 之 Spring 4 RESTful service
  8. 仅信用卡大小,性能比TX2强15倍,英伟达边缘AI计算新品Jetson Xavier NX
  9. 【hortonworks/registries】registries curator LeaderLatch: getChildren() failed. rc = -6 Xid 110
  10. nginx启动重启与升级以及检测配置文件
  11. 删除后别人的微信号变成wxid_安卓版微信更新了,微信号终于可以修改了?
  12. 万年历单片机课程设计百度文库_单片机课程设计-万年历
  13. 什么是企业能源管理系统,包括哪些功能?
  14. 合并txt文件的几个方法
  15. wx小程序 解决子组件样式不起效
  16. BMS锂电池管理系统如何增加蓝牙模块芯片
  17. 此计算机上的操作系统或service pack,win10系统安装补丁失败提示缺少service pack系统组件的设置办法...
  18. Xcode与C++之游戏开发: 游戏对象
  19. 数据的表示和运算,进制转换,BCD码,奇偶校验码,海明校验码,循环冗余码
  20. 能够将图片转化为文字的简便操作软件有什么?

热门文章

  1. Linux系统和Windows系统打开文件方式
  2. 手写数字识别——KNN算法的应用
  3. 财务投资者和战略投资者有什么分别
  4. Semantic Segmentation--SegNet:A Deep Convolutional Encoder-Decoder Architecture..论文解读
  5. 2019-7-2-WPF-通过-ReadyToRun-提升性能
  6. Windows11配置JDK1.8
  7. podman开机自启
  8. 电脑微信linux安装程序,Ubuntu安装Linux网页版微信
  9. sqlitebrowser
  10. Chrome 70 将继续在地址栏隐藏网址中的 WWW