前序遍历:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer>list=new ArrayList<Integer>();Stack<TreeNode>stack=new Stack<TreeNode>();while(root!=null||!stack.isEmpty()){while(root!=null){list.add(root.val);stack.push(root);root=root.left;}if(!stack.isEmpty()){root=stack.pop();root=root.right;}}return list;}
}

中序迭代遍历:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> list=new ArrayList<Integer>();Stack<TreeNode>stack=new Stack<TreeNode>(); while(root!=null||!stack.isEmpty()) {while(root!=null) {//先将左结点入栈stack.push(root);root=root.left;}if(!stack.empty()) {root=stack.pop();list.add(root.val);root=root.right;//如果当前结点有右结点遍历它的右结点}}return list;}
}

后序迭代遍历:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer>list=new ArrayList<Integer>();Stack<TreeNode>stack=new Stack<TreeNode>();TreeNode q=null;while(root!=null||!stack.isEmpty()) {while(root!=null) {stack.push(root);root=root.left;}if(!stack.empty()) {root=stack.peek();//取得结点但不让它出栈if((root.right==null)||(root.right==q)){//判断该节点的右结点是否访问过stack.pop();list.add(root.val);q=root;root=null;}else{root=root.right;}}}return list;}
}

Java实现二叉树的前中后序遍历(Leetcode)相关推荐

  1. 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]

    二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...

  2. Java二叉树的前中后序遍历

    Java二叉树的前中后序遍历 1.前序遍历 1.1前序遍历概念 1.2前序遍历习题 2.中序遍历 2.1中序遍历概念 2.2中序遍历习题 3.后续遍历 3.1后序遍历概念 3.2后序遍历习题 大家好, ...

  3. 数据结构之二叉树的前中后序遍历以及层序遍历

    学习目标:读完这篇博客搞定二叉树的前中后序以及层序遍历 首先:你应该明白什么是二叉树,下面这幅图就是一个完全二叉树 其实所谓的二叉树就是一个节点有小于等于二个分支的树,可以没有分支,可以有1条分支,可 ...

  4. 数据结构与算法(java):树-二叉树(二叉查找树(BST)、线索化二叉树、哈夫曼树、平衡二叉树【AVL】、二叉树的前中后序遍历)

    二叉树 1.定义 二叉树 就是度不超过2的树(每个结点最多只有两个子结点).如图 2.特殊二叉树 满二叉树 当二叉树的每一个层的结点树都达到最大值,则这个二叉树就是满二叉树. 完全二叉树 叶结点只能出 ...

  5. 二叉树的前中后序遍历之迭代法(非统一风格迭代方式)

    文章目录 前言 一.前序遍历(迭代法) 二.中序遍历(迭代法) 三.后序遍历(迭代法) 总结 前言 「递归的实现就是:每一次递归调用都会把函数的局部变量.参数值和返回地址等压入调用栈中」,然后递归返回 ...

  6. 二叉树的前中后序遍历(考试常考)

    二叉树遍历的概念 二叉树的遍历是按某种规则对二叉树的每个节点均只被访问一次,根据根节点访问位置的不同分为三种:先序遍历(根左右).中序遍历(左根右).后序遍历(左右根).         由于树是通过 ...

  7. Java~二叉树的前中后序遍历的几种方式(递归法,迭代法,标记法等)

    目录 一.结点的定义 二.递归法遍历二叉树 前序遍历 中序遍历 后序遍历 三.迭代(非递归)遍历二叉树 (1).迭代模拟法 前序遍历 中序遍历 后序遍历 (2).空指针标记法 前序遍历 中序遍历 后序 ...

  8. 【Java数据结构】二叉树的前中后序遍历(递归和非递归)

    二叉树的遍历 递归做法 前序遍历 中序遍历 后序遍历 非递归 前序遍历 中序遍历 后序遍历 二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 递归做法 前序遍 ...

  9. 【数据结构】二叉树的前中后序遍历

    二叉树的三种遍历 1. 创建一棵简单的二叉树 1.1 二叉树结构体实现 1.2 创造一个二叉树结点的函数 1.3 手动创造一棵二叉树 2.为什么要遍历? 3.最重要的知识:由二叉树引出的子问题分析 4 ...

最新文章

  1. xdoj 易碎的鸟蛋(鹰蛋实验)
  2. oracle技术之Oracle 跟踪事件(一)
  3. org.springframework.beans.factory.BeanCreationException: Error creating bean with name
  4. [20150608]dbms_random.value.txt
  5. [数据库事务与锁]详解一: 彻底理解数据库事务
  6. csi python 摄像头 树莓派_树莓派之摄像头和人脸识别
  7. Java——方法(练习九九乘法表)
  8. 普通软件项目开发过程规范(五)—— 总结
  9. 图像的一维熵和二维熵
  10. char 赋值 加入变量_王牌编程语言Java常量、变量、数据类型详解
  11. IDEA build时出现Artifact contains illegal characters的解决
  12. 数据绑定控件Reperter
  13. 智能机器人机器人心得_如果机器人说到上帝
  14. JavaScript—模块化(26)
  15. 如何注册知乎小号,利用知乎一天引流超高转化精准粉
  16. 两台计算机远程桌面连接不上去,远程桌面连接不上怎么办
  17. 游戏服务器应该怎么选择
  18. 移动聚合支付招商,管道收入享长期分润
  19. 计算机专业的大一学生暑假6,一个计算机专业大三学生的一天 Day6
  20. 面试金典12(Python)—— 删除中间节点(简单)

热门文章

  1. 佳能各系列数码相机特点简述
  2. 第一章--电商设计表电商项目--数据库设计
  3. matlab混叠现象与频率分辨率,连续时间信号频谱分析研究及MATLAB实现
  4. Java实现创建二维码操作
  5. RocketMQ实战系列-RocketMQ命令详解
  6. HBase环境搭建60010端口无法访问问题解决方案
  7. 【Linux系统和服务管理】MySQL服务器安装与配置(一)
  8. X86 CPU特性之(3)-kaiser
  9. Python注释风格--Google风格
  10. 基于Zookeeper实现简易版服务的注册与发现机制