数据结构——树

概念

树:非顺序(线形)数据结构;基于结点的数据结构,但树里面的每个结点,可以含有多个链分别指向其他多个结点。

相关术语

根节点:位于树顶部的节点叫做根节点,没有父节点。

内部节点和外部节点(支节点和叶子节点):
​ 树中每个元素都叫做节点,节点分为内部节点和外部节点。
​ 至少有一个子节点的节点被称为内部节点(支节点)。
​ 没有子节点的节点被称为外部节点或叶节点。

节点的祖先和后代
​ 除了根节点外,每个节点有且仅有一个父结点。
​ 一个节点(除了根节点)的祖先包括父节点、祖父节点、曾祖父节点等。
​ 一个节点的后代包括子节点、孙子节点、曾孙节点等。

子树:子树由节点和它的后代构成。

节点的度:一个节点含有的子结点的个数

树的度:树内所有节点的度的最大值

节点的深度:节点的深度取决于它的祖先元素的节点数量。

树的深度(高度):取决于所有节点深度的最大值。

特点

  • 树的根结点没有前驱结点,其它结点有且只有一个前驱结点;
  • 每个结点可以有0个或多个后继结点;
  • 子树互不相交;
  • 一颗有n个结点的树有n-1条边(因为根结点没有向上的边)。

树的性质

​ 树中的结点数等于所有结点的度数加1(度数对应树的边数,n个结点的树有n-1条边(根节点没有向上的边));

​ 度为m的树中第i层最多有 m i − 1 m^{i-1} mi1个结点(i >= 1)(度为m的树中第i层结点最多的数量等于满m叉树第i层的结点数量);

​ 高度为h的m叉树至多有 m h − 1 m − 1 \frac{m^{h}-1}{m - 1} m1mh1个结点(最多情况对应满二叉树,计算方法为等比数列求和);

​ 具有n个结点的m叉树的最小高度计算时考虑对应的完全m叉树(或者满m叉树)的情况(即设高度为h,则 m h − 1 m − 1 = n \frac{m^{h}-1}{m - 1}= n m1mh1=n,计算出的h向下取整 )。

二叉树

概念

​ 每个结点最多有两颗子树(即二叉树中结点的最大度为2),且二叉树是有序树。

几个特殊的二叉树

​ 满二叉树(Full Binary Tree)(完美二叉树(Perfect Binary Tree):指深度为k且有2k-1个结点的二叉树,即所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。

​ 完全二叉树(Complete Binary Tree):一颗深度为k的二叉树,k层的结点都是连续靠左并不可隔开的,并且1~k-1层的结点也组成了一棵满二叉树。

​ 二叉排序树(Binary Search Tree ):左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大的值。

​ 平衡二叉树(Balance Tree):任意节点的子树的高度差都小于等于1。

二叉树的性质

​ 对一棵二叉树,如果叶子节点的个数为 n 0 n_{0} n0,度为2的节点个数为 n 2 n_{2} n2,则 n 0 n_{0} n0= n 2 n_{2} n2+1(根据之前树的性质,有树的结点数等于所有结点的度数加1,得到 n 0 n_{0} n0 + n 1 n_{1} n1 + n 2 n_{2} n2 = n 1 + n 2 ∗ 2 + 1 n_{1} + n_{2}* 2+ 1 n1+n22+1 ,从而得到该等式);

​ 非空二叉树第k层上:最多有 2 k − 1 2^{k-1} 2k1 个结点;

​ 高度为h的二叉树上:最多有 2 h − 1 2^h-1 2h1 个结点(对应满二叉树);

​ 对于完全二叉树,结点编号为i的结点的双亲结点编号为[i / 2],若有左孩子,则左孩子编号为2 * i,若有右孩子,则右孩子编号为2 * i + 1;

​ 具有n个节点的完全二叉树的深度为 l o g 2 n + 1 {log_{2}}^{n}+1 log2n+1

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值