java 树 广度优先遍历_Java二进制搜索树遍历操作的详细描述[前,中,后,层次,广度优先遍历]...
本文介绍了Java二进制搜索树遍历操作. 与您分享以供参考,如下:
前言: 在Java Binary Search Tree Basics的上一节中,我们了解了该树及其相关知识,并对Binary Search Tree进行了基本实现. 下面我们继续改进我们的二进制搜索树.
对于二叉树,有深度遍历和宽度遍历. 深度遍历具有三种前序,中阶和后序遍历方法. 广度遍历就是我们通常所说的分层遍历,如图所示:
由于树本身的定义是递归定义,因此我们使用递归方法来实现前顺序,中顺序和后顺序的三个遍历. 对于广度优先遍历二叉排序树 遍历,我们需要选择其他数据结构. 排队以实现广度优先遍历.
四个基本遍历思想是:
遍历顺序: 根节点--->左子树--->右子树
按顺序遍历: 左子树--->根节点--->右子树
后遍历: 左子树->右子树->根节点
层遍历: 从上到下,从左到右.
例如,以下二进制树的各种遍历:
遍历顺序: 5-3-2-4-6-8
有序遍历: 2-3-4-5-6-8
后遍历: 2-4-3-8-6-5
遍历水平: 5-3-6-2-4-8
根据上面提到的遍历思想: 根节点--->左子树--->右子树,代码实现如下:
//二分搜索树的前序遍历(前序遍历:根结点 ---> 左子树 ---> 右子树)
public void preOrder() {
preOrder(root);
}
//前序遍历以node为根的二分搜索树,递归算法
private void preOrder(Node node) {
if (node == null) {
return;
}
System.out.println(node.e);
preOrder(node.left);
preOrder(node.right);
}
根据上面提到的遍历思想: 左子树--->根节点--->右子树,代码实现如下:
//二分搜索树的中序遍历(中序遍历:左子树---> 根结点 ---> 右子树)
public void inOrder() {
inOrder(root);
}
//中序遍历以node为根的二分搜索树,递归算法
private void inOrder(Node node) {
if (node == null) {
return;
}
inOrder(node.left);
System.out.println(node.e);
inOrder(node.right);
}
根据上面提到的遍历思想: 左子树--->右子树--->根节点二叉排序树 遍历,代码实现如下:
//二分搜索树的后序遍历(后序遍历:左子树 ---> 右子树 ---> 根结点)
public void postOrder() {
postOrder(root);
}
//后序遍历以node为根的二分搜索树,递归算法
private void postOrder(Node node) {
if (node == null) {
return;
}
postOrder(node.left);
postOrder(node.right);
System.out.println(node.e);
}
对于分层遍历,我们基于队列来实现,其思想如下:
(1)首先将根节点添加到队列中
(2)对于其他任何随机节点,请在它们离开队列时进行访问(假设左右子节点不为空,请输入队列)
代码实现如下:
//层次遍历--(基于队列实现)
public void levelOrder() {
Queue q = new LinkedList<>();
q.add(root);
while (!q.isEmpty()) {
Node cur = q.remove();
System.out.println(cur.e);
if (cur.left != null) {
q.add(cur.left);
}
if (cur.right!=null){
q.add(cur.right);
}
}
}
源代码地址
更多对Java算法相关内容感兴趣的读者可以查看该站点的主题: “ Java数据结构和算法教程”,“在Java中操作DOM节点的技术摘要”,“用于操作Java文件和技术的技术摘要”. 目录”和“ Java Cache操作技巧摘要”
我希望本文对Java编程的每个人都有帮助.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-212668-1.html
java 树 广度优先遍历_Java二进制搜索树遍历操作的详细描述[前,中,后,层次,广度优先遍历]...相关推荐
- 转载:二叉树的前中后和层序遍历详细图解(递归和非递归写法)
二叉树的前中后和层序遍历详细图解(递归和非递归写法) Monster_ii 2018-08-27 17:01:53 50530 收藏 403 分类专栏: 数据结构拾遗 文章标签: 二叉树 前序 中序 ...
- JAVA 二叉树 常见操作合集(前中后序递归非递归遍历 层序遍历 求深度宽度 判断兄弟结点 堂兄弟节点)
今天复习了二叉树的相关操作,整理归纳如下. 二叉树结点定义 //节点类private static class TreeNode{private int val = 0;private TreeNod ...
- 二叉树前中后序遍历以及节点计算
二叉树前中后序遍历以及节点计算 二叉树 分类 二叉链的数据结构 三叉链的数据结构 四种遍历方法 深度优先遍历:前中后序 广度优先遍历:层序遍历 计算 节点个数 叶子节点个数 树的高度 第k层的节点个数 ...
- 数据结构之二叉树的前中后序遍历以及层序遍历
学习目标:读完这篇博客搞定二叉树的前中后序以及层序遍历 首先:你应该明白什么是二叉树,下面这幅图就是一个完全二叉树 其实所谓的二叉树就是一个节点有小于等于二个分支的树,可以没有分支,可以有1条分支,可 ...
- 数据结构与算法(java):树-二叉树(二叉查找树(BST)、线索化二叉树、哈夫曼树、平衡二叉树【AVL】、二叉树的前中后序遍历)
二叉树 1.定义 二叉树 就是度不超过2的树(每个结点最多只有两个子结点).如图 2.特殊二叉树 满二叉树 当二叉树的每一个层的结点树都达到最大值,则这个二叉树就是满二叉树. 完全二叉树 叶结点只能出 ...
- java 建树源码_Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】...
import java.util.ArrayDeque; import java.util.Queue; import java.util.Stack; //二叉树的建树,前中后 递归非递归遍历 层序 ...
- java建树_Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】...
本文实例讲述了Java实现的二叉树常用操作.分享给大家供大家参考,具体如下: import java.util.ArrayDeque; import java.util.Queue; import j ...
- 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]
二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...
- LeetCode——树:层次遍历、前中后序遍历
LeetCode--树:层次遍历.前中后序遍历 目录 层次遍历 二叉树的层平均值 找树左下角的值 前中后序遍历 概述 非递归实现二叉树的前序遍历 非递归实现二叉树的中序遍历 非递归实现二叉树的后序遍历 ...
最新文章
- Pycharm+Anacond安装完成后的Python文件创建以及No module named 'bs4'.
- Cocos2d-X中实现菜单特效
- 如何使Sybase ASE中对象名不区分大小写?
- table中head表头固定,body滚动
- 11深入理解C指针之---指针和常量
- Ardino基础教程 21_最简单最快控制LCD1602
- 中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先
- [技术回顾系列]--认识WebService全貌
- ReactNative入门之android与rn初始化参数的传递
- python学习——numpy库
- 电脑重装系统需要全盘格式化吗?这个事项需要看情况
- Python爬虫基础-02-提取数据
- 三星手机真假测试软件,#三星EVO Plus MicroSD存储卡# 火眼金睛识真伪、评测软件测性能...
- 元宇宙游戏控制这几个因素,正确姿势解锁元宇宙游戏开发盈利痛点
- python drop用法_Python drop方法删除列之inplace参数实例
- 导入Zip bomb detected
- 电脑重装系统后,重启时遇到错误,报错需要重新启动,并重新安装系统
- 光阴似锦,关于身体保养的那些事
- 阿里云携手创业黑马,“双百计划”赋能百城万企创新转型
- 真人口播视频号:流量不愁,变现才是重中之重丨国仁网络
热门文章
- 乱序和屏障1 : 总览 及 编译器内存屏障
- 毛泽东《浪淘沙·北戴河》气势磅礴
- pipeline与make_pipeline
- Ubuntu language bar / 语言栏不显示的处理
- 手把手教你Nginx常用模块详解之ngx_http_status_module(十一)
- 京津冀计算机学科大学排名,京津冀十强高校排名,这三所大学进入前十,实力强悍...
- 两种常用的参考图像质量评价指标——超分辨率(五)
- CSDN 编程竞赛十八期题解
- 带头结点双向循环 -- 双向链表
- 双向带头循环链表-实现思路+图解