数据结构(Java实现)-二叉树(上)

这篇具有很好参考价值的文章主要介绍了数据结构(Java实现)-二叉树(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


树型结构
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

  • 有一个特殊的结点,称为根结点,根结点没有前驱结点
  • 除根结点外,其余结点被分成M(M > 0)个互不相交的集合
  • 树是递归定义的。
  • 树形结构中,子树之间不能有交集,否则就不是树形结构

树与非树
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


概念(重要)
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


树的表示形式

最常用的孩子兄弟表示法
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


树的应用
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


二叉树
概念
一棵二叉树是结点的一个有限集合,该集合:

  1. 或者为空
  2. 或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。
    数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言1. 二叉树不存在度大于2的结点
    二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树

两种特殊的二叉树
满二叉树: 一棵二叉树,如果每层的结点数都达到最大值,则这棵二叉树就是满二叉树。
如果一棵二叉树的层数为K,且结点总数是(2^k)-1 ,则它就是满二叉树。
完全二叉树: 对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。如下
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


二叉树的性质
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


二叉树的存储
二叉树的存储结构分为:顺序存储和类似于链表的链式存储
二叉树的链式存储是通过一个一个的节点引用起来的,常见的表示方式有二叉和三叉表示方式
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
这里我们使用孩子表示法


二叉树的基本操作
简单的创建一棵树
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


二叉树的遍历
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。
NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点—>根的左子树—>根的右子树。
LNR:中序遍历(Inorder Traversal)——根的左子树—>根节点—>根的右子树。
LRN:后序遍历(Postorder Traversal)——根的左子树—>根的右子树—>根节点。
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
遇到左子树和右子树都不打印,遇到根时才打印


前序遍历
根,左子树,右子树
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

首先进入的是根,则打印根A;然后走左子树,左子树的第一个节点B又可以看作是根,打印根B;之后再走左子树,左子树的第一个节点是D,D又可以看作是根,打印D;走左子树,左子树为null,走右子树,右子树为null;则以D为根的这棵树结束。返回到D。D作为上一次的左子树,走右子树,右子树为null;则以B为根的这棵树结束,返回到B。B作为上上一次的左子树,走右子树C,C又可以看作是根,则打印C;之后走左子树…依次如此。
上述前序遍历的结果是A,B,D,C,E,F


中序遍历

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
左子树,根,右子树
中序遍历的结果是:D,B,A,E,C,F


后序遍历
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

左子树,右子树,根
上述后序遍历的结果是:D,B,E,F,C,A


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


层序遍历
层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层
上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
上述层序遍历的结果为:A,B,C,D,E,F


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
完全二叉树可以保证前k-1层为全满状态
于是
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
前序遍历为:A,B,D,H,E,C,F,G


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言选D


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


二叉树的基本操作
前序遍历
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


带有返回值的前序遍历
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
结果如下:
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
三种遍历的区别在于具体在什么时机去打印元素
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


获取树中节点的个数
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
结果如下
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


获取叶子节点的个数
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言


获取第K层节点的个数数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言

数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言
数据结构(Java实现)-二叉树(上),数据结构(Java实现),数据结构,java,开发语言文章来源地址https://www.toymoban.com/news/detail-677571.html


到了这里,关于数据结构(Java实现)-二叉树(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【java数据结构-二叉树(上)】

    🔥个人主页: 努力学编程’ 🔥内容管理: java数据结构 hello,今天带大家学习 数据结构 中非常重要的一个知识点 二叉树 ,二叉树主体的实现使用的是递归的知识,通过二叉树我们可以更好的理解递归的应用。今天就带大家学习一下二叉树的一些知识。 概念 : 树是一种非

    2024年04月08日
    浏览(27)
  • 数据结构之二叉树(Java)

    在这里先说明一下,结点和节点其实一样的,无须关注这个。 1. 概念:树是一种非线性的数据结构,它是由n个有限节点组成一个具有层次关系的集合。 如上图所示,把此种数据结构称作树是因为它看起来像一个倒挂的树。  2. 特点 有一个特殊的节点,称为根节点,它是唯一

    2024年02月07日
    浏览(21)
  • 【Java 数据结构】树和二叉树

    篮球哥温馨提示:编程的同时不要忘记锻炼哦! 目录 1、什么是树? 1.1 简单认识树  1.2 树的概念  1.3 树的表示形式 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树性质相关习题 3、实现二叉树的基本操作 3.1 了解二叉树的存储结构 3.2 简单构造一棵

    2024年01月16日
    浏览(29)
  • Java数据结构——二叉树的遍历

     作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:和我一起学java 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器——牛客网 点击注册和我一起刷题 文章目录 1.创建二叉树 2.二叉树的三种遍历方式 3.代码实现遍历 前序遍历

    2024年01月22日
    浏览(32)
  • Java常见的数据结构:栈、队列、数组、链表、二叉树、二叉查找树、平衡二叉树、红黑树

    数据结构是计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率 栈 队列 数组 链表 二叉树 二叉查找树 平衡二叉树 红黑树... 后进先出,先进后出 数据进入栈模型的过程称为

    2024年02月07日
    浏览(28)
  • Java 【数据结构】 二叉树(Binary_Tree)【神装】

        登神长阶  第五神装 二叉树 Binary-Tree 目录  🎷一.树形结构 🪗1.概念 🎸2.具体应用 🎹 二.二叉树(Binary Tree) 🎺1.概念  🎻2.表现形式 🪕3.特殊类型 🥁3.1完全二叉树(Complete Binary Tree) 🪘3.2满二叉树(Full Binary Tree) 🔋4.性质  🪫5.二叉树的遍历 💿5.1前中后序遍历

    2024年04月27日
    浏览(31)
  • 【Java数据结构】二叉树的前中后序遍历(递归和非递归)

    二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 前序遍历的遍历方式是 先根节点 在左节点 在右节点 述这棵树前序遍历的结果是: A B D E C F G 递归的思想就是把问题拆分成一个个小问题来解决 treeNode是一个内部类 具体实现

    2023年04月26日
    浏览(38)
  • Java学数据结构(2)——树Tree & 二叉树binary tree & 二叉查找树 & AVL树 & 树的遍历

    1.树的出现:解决链表线性访问时间太慢,树的时间复杂度O(logN); 2.二叉树的定义,最多两个儿子节点; 3.二叉查找树,左小,右大,中居中;remove方法,两种,只有一个儿子节点,有两个儿子节点; 4.AVL树,在二叉查找树基础上加平衡条件,旋转方法,单旋转,双旋转;

    2024年02月10日
    浏览(40)
  • 【数据结构和算法】--- 二叉树(3)--二叉树链式结构的实现(1)

    在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入,且为了方便后面的介绍,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研

    2024年01月25日
    浏览(40)
  • 【数据结构】树、二叉树的概念和二叉树的顺序结构及实现

    之前我们学习了顺序表、链表以及栈和队列这些数据结构,但这些数据结构都是线性的(一对一)。接下来要学习 非线性的数据结构——树(二叉树) ,相比前面的,树的结构更加复杂,话不多说,直接进入正题吧。 树是一种 非线性的数据结构 ,它是 一对多(也有可能是

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包