【树】树、二叉树的基础知识

定义:

树是n(n≥0)个结点的 有限集合T。当 n=0时,称为 空树;当n>0时,该集合满足如下条件:
(1) 其中必有一个称为根(root)的特定结点,它 没有直接前驱,但有零个或多个直接后继。
(2) 其余n-1个结点可以划分成m(m≥0)个 互不相交的有限集T1,T2,T3,…,Tm,其中Ti又是一棵树,称为根root的子树。每棵子树的根结点 有且仅有一个直接前驱,但有零个或多个直接后继。

这是一个递归的定义,树里面还有子树,树型结构是一个一对多的结构。

基本术语:

结点的度(Degree):结点拥有的子树数量; D的度为3

叶子(Left)/终端结点:度为0的结点;KLFGMIJ

分支结点/非终端接结点:度不为0的结点;

树的度:树内各结点的度的最大值;3

孩子(Child):结点的子树的根为该结点的孩子(结点的直接后驱);BCD是A的孩子

双亲结点(Parent):一个结点的直接前驱; A是BCD的双亲

兄弟结点(Sibling):同一个双亲的孩子之间互称; BCD

堂兄弟:其双亲在同一层的结点; KM

祖先:从根到该结点所经分支上的所有结点; E的祖先为AB

子孙:以某结点为根的子树中的任一结点; B的子孙为EK

层次:从根开始定义,根为第一层,根的孩子为第二层。(也可以把根看成第0层)

深度:根的深度为0,其他结点深度为从根到此结点的唯一路径长。

森林:m(m>=0)棵互不相交的树的集合

无序树/自由树:树中任意结点的子结点之间没有顺序关系。反之为有序树。

二叉树

定义:

我们把满足以下两个条件的树形结构叫做二叉树(Binary Tree):
(1)每个结点的度都不大于2;
(2)每个结点的孩子结点次序不能任意颠倒。

一个二叉树中的每个结点只能含有0、1或2个孩子,而且每个孩子有左右之分。位于左边的孩子叫做左孩子,位于右边的孩子叫做右孩子。

性质:

若二叉树的层次从0开始,则在二叉树的第i层最多有2^i个结点

高度为k的二叉树最多有2^(k+1)-1个结点。(k>=-1)

若二叉树叶结点的个数为n0,度为2的结点个数为n2,则n0 = n2+1;

满二叉树:每一层的结点都达到最大个数,若每层从右向左依次缺省,就为完全二叉树

具有n个结点的完全二叉树的高度为|log(n+1)|-1,向上取整

二叉树的存储

顺序存储

数组存放树都是存放的完全二叉树,当有空时也必须存东西,可以用其他符号表示空,因为数组存放的是一个逻辑关系。

链式存储

静态结构

数据+关系

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曦樂~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值