源自快手电商一面

package cn.com.codingce.树.遍历;import cn.com.codingce.树.TreeNode;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;/*** 树的遍历** @author inke219223m*/
public class Solution {public static void main(String[] args) {// 层序遍历测试 SRARTSystem.out.println("==========层序遍历测试 SRART==========");TreeNode root = new TreeNode();root.val = 1;TreeNode root_left = new TreeNode();root_left.val = 3;TreeNode root_right = new TreeNode();root_right.val = 2;root.left = root_left;root.right = root_right;TreeNode root_left_left = new TreeNode();root_left_left.val = 4;root_left.left = root_left_left;new Solution().levelOrder(root).forEach(System.out::println);// 层序遍历测试 ENDSystem.out.println();// 前序遍历 STARTSystem.out.println("==========前序遍历 START==========");new Solution().preOrderTraverse(root);System.out.println();// 前序遍历 ENDSystem.out.println();// 中序遍历 STARTSystem.out.println("==========中序遍历 START==========");new Solution().inOrderTraverse(root);System.out.println();// 中序遍历 ENDSystem.out.println();// 后序遍历 STARTSystem.out.println("==========后序遍历 START==========");new Solution().postOrderTraverse(root);System.out.println();// 后序遍历 END}/*** 层序遍历(BFS思想)** @param root* @return*/public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {// write code hereArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();//根节点为空,直接返回resif (root == null) return res;if (root != null) {// 用先进先出的队列Queue<TreeNode> queue = new LinkedList<>();// 在容量已满的情况下,add() 方法会抛出IllegalStateException异常,offer() 方法只会返回 false。queue.offer(root);while (!queue.isEmpty()) {int size = queue.size();ArrayList<Integer> level = new ArrayList<Integer>();while (size-- > 0) {// 在队列元素为空的情况下,remove() 方法会抛出NoSuchElementException异常,poll() 方法只会返回 null 。TreeNode temp = queue.poll();level.add(temp.val);if (temp.left != null) queue.offer(temp.left);if (temp.right != null) queue.offer(temp.right);}res.add(level);}}return res;}/*** 前序列遍历** @param node*/public void preOrderTraverse(TreeNode node) {if (node == null) return;System.out.print(node.val + "\t");preOrderTraverse(node.left);preOrderTraverse(node.right);}/*** 中序遍历** @param node*/private void inOrderTraverse(TreeNode node) {if (node == null) return;inOrderTraverse(node.left);System.out.print(node.val + "\t");inOrderTraverse(node.right);}/*** 后序遍历** @param node*/private void postOrderTraverse(TreeNode node) {if (node == null) return;postOrderTraverse(node.left);postOrderTraverse(node.right);System.out.print(node.val + "\t");}}

二叉树的前、中、后、层序遍历整理(Java版本)相关推荐

  1. 2021-10-11 ! LeetCode226. 翻转二叉树 的前中后层序遍历写法

    还是遍历框架的应用 //! 二叉树的翻转:本质就是二叉树的遍历的应用 //! 以任意形式遍历二叉树的每一个结点,访问每一个结点的同时调换其左右子树 //! 中序遍历额外注意一下调换后的参数问题 Nod ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. 二叉树的相关性质及其前中后层序遍历实现

    写在前面: 本文前面部分介绍相关概念,后面部分是程序. 点击下面链接查看更多! 点击此处发现更多 一.二叉树的概念 1.1 相关术语 ①结点:包含一个数据元素及若干指向子树分支的信息 . ②结点的度: ...

  9. 二叉树的前中后层遍历

    package com.data.tree;public class BiTree {String data;//数据域BiTree left,right;//下一个结点int leval;//层数 ...

最新文章

  1. 我在中关村给不了你国贸的爱
  2. nginx压力测试和并发预估
  3. Git使用学习笔记 (一)
  4. android 获取权限管理,Android常用权限获取和设置
  5. SAP支持服务的QA
  6. 未来计算机论文1500,致未来的自己作文1500字
  7. html实现验证码效果,js实现验证码功能
  8. VS2010 IDE安装问题
  9. 管道 mkfifio函数的使用
  10. cartopy模块介绍与安装
  11. hcfax2e伺服驱动器说明书_伺服电机说明书
  12. 十大城市11月房价止跌回升 上海涨幅最高
  13. 你不知道的达梦数据库
  14. 或许,这是最好的一款微信公众号编辑器!
  15. 简易搭建阿里云个人简历网站教程
  16. 设计一个学校食堂管理系统
  17. MYSQL对千万级数据的快速迁移(10个G左右)
  18. 趋高智能注塑件表面视觉检测之机器视觉的缺陷检测方案
  19. 信息系统项目管理师论文范文:整体管理篇
  20. 实验四+二层旁挂式WLAN组网设计

热门文章

  1. NAACL 2019最佳论文:量子概率驱动的神经网络
  2. php中复选框删除数据_ERP分析中如何自动删除休息阶段的脑电数据?
  3. java.lang.IllegalStateException: Calling [asyncError()] is not valid for a request with Async state
  4. SQL server报错42000 - [SQL Server]从数据类型 varchar 转换为 int 时出错。
  5. The Preliminary Contest for ICPC China Nanchang National Invitational
  6. Bounce 弹飞绵羊
  7. redis三种架构:主从Cluster哨兵+整合Springboot访问redis
  8. 【笔记】docker核心概念和使用 docker命令
  9. 【笔记】JAVA中的泛型和反射
  10. 【(Python解释器、Pycharm)安装教程】【使用PyCharm编写第一个Python程序】