JAVA学习数据结构——树(个人学习重点)

本文详细介绍了树的定义、结点分类、树的抽象数据类型及其存储结构,特别是二叉树的特性、遍历方法和相关性质。讨论了完全二叉树和满二叉树的区别,并探讨了如何通过前序、中序和后序遍历序列来重建二叉树。此外,还提及了树、森林和二叉树之间的转换以及赫夫曼树的应用。
摘要由CSDN通过智能技术生成

树的定义

树是一种一对多的数据结构。
树是含有n个结点的有限集。n=0时为空树
非空树中:

  • 有切仅有一个特定的结点——根结点root。
  • 当n>1时,其余节点可以分成m个互不相交的有限集T1,…Tm,每个集合本身又是一棵树。我们称为根的子树。

结点分类

度:结点有用的子树的个数称为该结点的度。
树的度是树内各结点的度的最大值。

  • 根结点:度不为0
  • 中间结点:度不为0
  • 叶子结点: 度为0

结点间的相互关系

  • 孩子结点:该结点的子树的根。(就是直接相连的向下的结点)
  • 双亲结点:A是B的孩子结点,B就是A的双亲结点。
  • 兄弟节点:有着同样双亲结点的各个结点。
  • 祖先结点:从根到该结点所经分支上的所有结点。
  • 子孙结点:以该结点为根的子树中的任意结点。

树的其他概念

结点的层次: 根为第一层,每向下有孩子就加一层。
树中结点的最大层次称为树的深度(高度)

森林是m个**(m>=0)** 课互不相交的树的集合。

对比一下线性结构和树形结构:
在这里插入图片描述

树的抽象数据类型

树的存储结构

双亲表示法

树的结点的特性: 这个结点可能没有孩子结点,但是一定有双亲结点
一个结点有信息域和位置域,位置域用来表示双亲所在位置。
类似这样:在这里插入图片描述

双亲孩子表示法

把所有结点放入一个二维数组当中,

孩子兄弟表示法

原理:任何一棵树中的结点中,该结点的第一个孩子存在,就是唯一的。它的右兄弟如果存在,也是唯一的。(有序树)

做法:设置2个指针,分别指向该结点的第一个孩子和该结点的右兄弟。(也可以设置多余的指针来解决访问双亲结点等一些问题)

这个表示法将一棵复杂的树变成了一颗二叉树

二叉树

定义:由n个结点组成(n>=0). 如果n>0.那么这个二叉树一定是由一个根节点和两颗互不相交的二叉树组成(有递归的感觉)

二叉树的特点

  1. 每个结点最多两棵子树
  2. 左子树
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值