2022/08/05 吉软 Java基础(19) 数据结构——树

本文深入探讨了数据结构中的树和二叉树概念,包括树的结点、度、层次和深度,以及二叉树的特性、性质、满二叉树和完全二叉树的区别。特别强调了二叉树的存储结构,如顺序存储和二叉链表,并详细阐述了二叉树的前序、中序、后序和层次遍历方法。
摘要由CSDN通过智能技术生成

目录

一.数据结构——树:

结点:

树(Tree):

 树的定义:

树的深度:

二叉树:

二叉树的特点:

二叉树的性质:

 斜树:

满二叉树的特点:

完全二叉树:

二叉树的存储结构:

二叉树遍历(重点)


一.数据结构——树:

结点:

        结点是数据结构中的基础,构成复杂数据结构基本组成单位 

结点的度:
        结点拥有子节点的数量称为结点的度。
结点关系:
        结点子树的根节点称为该节点的孩子结点。相应该节点称为孩子结点的父节点(双亲结点)。
结点层次:

        结点的层次(Level)从根开始定义起,根为第一层,根的孩子为第二层。若某结点在第1层,则其子树的根就在第1+1层。其双亲在同一一层的结点互为堂兄弟。显然图5中的D、E、F是堂兄弟,而G、H、I、J也是。树中结点的最大层次称为树的深度(Depth)或高度,当前树的深度为4。

 

树(Tree):

        是 n(n>=0)个结点的有限集,n=0,称为空树。 

在任意的非空树中:

       1.有且仅有一个特定的称为根结点
       2.当n>1时,其余结点可分为m个互不相交的有限集

 树的定义:

树(Tree)是n(n≥0)个结点的有限集。n=0 时称为空树。在任意一棵非空树中:
        (1)有且仅有一个特定的称为根( Root)的结点;
        (2)当n>1时,其余结点可分为m (m>0)个互不相交的有限集T1、T2、… Tm。其中每一个集合本身又是一棵树,并且称为根的子树( SubTree)

树的定义中,使用了递归的方式。递归在树的学习过程中起着重要的作用。

树的深度:

        树中结点的最大层数称为树的深度或高度。

二叉树:

        二叉树是n个结点的有限集合,如果n=0,那就称为空二叉树。

二叉树的特点:

  • 每个结点最多只有两颗子树,所以二叉树中不存在度大于2的结点
  • 左子树和右子树是有顺序的,次序不能任意颠倒
  • 即使树种某个结点只有一颗子树,也要区分它是左子树还是右子树

二叉树的性质:

  1. 在二叉树中第i层上最多有2^(i-1)个结点(i>=1)
  2. 二叉树中如果深度为k,那么最多有2^k-1个结点。
  3. n0=n2+1,n0表示度数为0的结点,n2表示度数为2的结点数
  4. 在完全二叉树中,,具有n个结点的完全二叉树的深度为[log2n] +1,其中[log2n]是向下取整
  5. 若对含n个结点的完全二叉树从上到下且从左到右进行1至n的编号,则对完全二叉树中任意一个编号为i的结点有如下特性:

           (1)若i=1,则该结点是二叉树的根,无父节点,否则,编号为i/2的结点为其父节点

           (2)若2i>n,则该结点无左孩子结点,否则,编号为2i的结点为其左孩子结点

           (3)若2i+1>n,则该结点无右孩子结点,否则,编号为2i+1的结点为右孩子结点


 斜树:

        所有的结点都只有左子树的二叉树叫做左斜树。所有结点都是只有右子树的二叉树叫右斜树。


满二叉树的特点:

  • 叶子只能出现在下一层。
  • 非叶子结点的度一定是2
  • 在同样深度的二叉树中,满二叉树的结点个数最多,叶子数也最多。

完全二叉树:

        对一颗具有n个结点的二叉树按层编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点位置完全相同。这颗二叉树就称为完全二叉树。

二叉树的存储结构:

1.顺序存储

  • 使用一维数组存储二叉树中的结点,并且结点的存储位置,就是数组的下标索引。
  • 当二叉树为完全二叉树时,结点数刚好填满数组。
  • 如果二叉树不是完全二叉树,采用顺序存储,顺序存储结构中已经出现了空间浪费的情况。
  • 比如右斜树极端情况,采用顺序存储的方式是十分浪费空间。
  • 顺序存储只适用于完全二叉树。

2.二叉链表

  • 顺序存储不能满足二叉树的存储要求,采用链式存储。
  • 二叉树的每个结点都有两个孩子。
  • 可以将结点数据结构定义成一个数据和两个指针域。

二叉树遍历(重点)

        二叉树的遍历从根节点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次,且仅被访问一次。

二叉树的访问次序可以分为四种:

前序遍历:从二叉树的根结点出发,按照先向左再向右的方向访问。(根左右)

后序遍历:从二叉树的根结点出发,先向左再向右的方向访问。(左右根)

中序遍历:从二叉树的根结点出发,按照先向左再向右访问。(左根右)

层次遍历:按照树的层次自上而下的遍历二叉树。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值