Java实现二叉树的前中后序遍历(Leetcode)
前序遍历:
/*** 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)相关推荐
- 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]
二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...
- Java二叉树的前中后序遍历
Java二叉树的前中后序遍历 1.前序遍历 1.1前序遍历概念 1.2前序遍历习题 2.中序遍历 2.1中序遍历概念 2.2中序遍历习题 3.后续遍历 3.1后序遍历概念 3.2后序遍历习题 大家好, ...
- 数据结构之二叉树的前中后序遍历以及层序遍历
学习目标:读完这篇博客搞定二叉树的前中后序以及层序遍历 首先:你应该明白什么是二叉树,下面这幅图就是一个完全二叉树 其实所谓的二叉树就是一个节点有小于等于二个分支的树,可以没有分支,可以有1条分支,可 ...
- 数据结构与算法(java):树-二叉树(二叉查找树(BST)、线索化二叉树、哈夫曼树、平衡二叉树【AVL】、二叉树的前中后序遍历)
二叉树 1.定义 二叉树 就是度不超过2的树(每个结点最多只有两个子结点).如图 2.特殊二叉树 满二叉树 当二叉树的每一个层的结点树都达到最大值,则这个二叉树就是满二叉树. 完全二叉树 叶结点只能出 ...
- 二叉树的前中后序遍历之迭代法(非统一风格迭代方式)
文章目录 前言 一.前序遍历(迭代法) 二.中序遍历(迭代法) 三.后序遍历(迭代法) 总结 前言 「递归的实现就是:每一次递归调用都会把函数的局部变量.参数值和返回地址等压入调用栈中」,然后递归返回 ...
- 二叉树的前中后序遍历(考试常考)
二叉树遍历的概念 二叉树的遍历是按某种规则对二叉树的每个节点均只被访问一次,根据根节点访问位置的不同分为三种:先序遍历(根左右).中序遍历(左根右).后序遍历(左右根). 由于树是通过 ...
- Java~二叉树的前中后序遍历的几种方式(递归法,迭代法,标记法等)
目录 一.结点的定义 二.递归法遍历二叉树 前序遍历 中序遍历 后序遍历 三.迭代(非递归)遍历二叉树 (1).迭代模拟法 前序遍历 中序遍历 后序遍历 (2).空指针标记法 前序遍历 中序遍历 后序 ...
- 【Java数据结构】二叉树的前中后序遍历(递归和非递归)
二叉树的遍历 递归做法 前序遍历 中序遍历 后序遍历 非递归 前序遍历 中序遍历 后序遍历 二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 递归做法 前序遍 ...
- 【数据结构】二叉树的前中后序遍历
二叉树的三种遍历 1. 创建一棵简单的二叉树 1.1 二叉树结构体实现 1.2 创造一个二叉树结点的函数 1.3 手动创造一棵二叉树 2.为什么要遍历? 3.最重要的知识:由二叉树引出的子问题分析 4 ...
最新文章
- xdoj 易碎的鸟蛋(鹰蛋实验)
- oracle技术之Oracle 跟踪事件(一)
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name
- [20150608]dbms_random.value.txt
- [数据库事务与锁]详解一: 彻底理解数据库事务
- csi python 摄像头 树莓派_树莓派之摄像头和人脸识别
- Java——方法(练习九九乘法表)
- 普通软件项目开发过程规范(五)—— 总结
- 图像的一维熵和二维熵
- char 赋值 加入变量_王牌编程语言Java常量、变量、数据类型详解
- IDEA build时出现Artifact contains illegal characters的解决
- 数据绑定控件Reperter
- 智能机器人机器人心得_如果机器人说到上帝
- JavaScript—模块化(26)
- 如何注册知乎小号,利用知乎一天引流超高转化精准粉
- 两台计算机远程桌面连接不上去,远程桌面连接不上怎么办
- 游戏服务器应该怎么选择
- 移动聚合支付招商,管道收入享长期分润
- 计算机专业的大一学生暑假6,一个计算机专业大三学生的一天 Day6
- 面试金典12(Python)—— 删除中间节点(简单)