考研数据结构——树的性质

1、树的性质

  1. 树中结点数 = 所有结点度数 + 1。
  2. 度为 m 的树中第i层至多有$ m^{i-1} $ 个结点($ i\ge1$)。
  3. 高度为 h 的 m 叉树至多有$ (m^h-1)/(m-1)$ 个结点。
  4. 具有 n 个结点的 m 叉树的最小高度为$ \lceil log_m(n*(m-1)+1)\rceil $。
  5. 总分支数 = 1 n 1 + 2 n 2 + 3 n 3 + … + m n m ( 度为 m 的结点分出 m 条分支 ) 1n_1+2n_2+3n_3+…+mn_m(度为m的结点分出m条分支) 1n1+2n2+3n3++mnm(度为m的结点分出m条分支)
  6. 总结点数 = $ n_0 + n_1 + n_2 +…+n_m(n_i表示度为i的结点个数)$。
  7. 总结点数 = 总分支数 + 1。
  8. 任意一棵树,结点数量为 n,则边的数量为 n - 1。

2、二叉树的性质

  1. 非空二叉树的叶子结点数等于度为 2 的结点数加 1,即 n 0 = n 2 + 1 n_0 = n_2 + 1 n0=n2+1
  2. 结点总数 n = n 0 + n 1 + n 2 = n 1 + 2 n 2 + 1 n = n_0 + n_1 + n_2 = n_1 + 2n_2 + 1 n=n0+n1+n2=n1+2n2+1
  3. 非空二叉树第 k 层至多有 2 k − 1 2^{k-1} 2k1 个结点($ k\ge1$)。
  4. 高度为 h 的二叉树至多有 2 h − 1 2^h-1 2h1 个结点($ h\ge1$)。
  5. n 个结点的完全二叉树高度为 $ \lceil log_2(n+1) \rceil 或者\lfloor log_2 n \rfloor+1$。
  6. 对于完全二叉树,其结点个数 n = n 1 + 2 n 2 + 1 n = n_1 + 2n_2 + 1 n=n1+2n2+1若结点数为偶数 2k 时, n 1 = 1 , n 2 = k − 1 , n 0 = k ; n_1 = 1,n_2 = k - 1,n_0 = k; n1=1,n2=k1,n0=k若结点数为奇数 2k + 1 时, n 1 = 0 , n 2 = k , n 0 = k + 1 n_1 = 0,n_2 = k ,n_0 = k+1 n1=0,n2=k,n0=k+1

若有度为 1 的结点有且只有一个,即最末尾的叶子结点的父结点。

  1. n 个结点的二叉链表中,空链域的个数为 n + 1。

n 个结点的二叉链表,总链域个数 = 2n,由于(除根结点外)每个结点都被其父结点指向,占用 n - 1 个链域,或使用树性质8,可知边的个数为 n - 1,即占用n - 1条链域,得出空链域 = 2n - (n - 1) = n + 1。

3、二叉树的遍历性质

  1. 前序(先序)遍历:根、左、右。
void PreOrder(BiTree T){
 if(T != NULL) {
     visit(T);
     PreOrder(T->lChild);
     PreOrder(T->rChild);
 }
}
  1. 中序遍历:左、根、右。
void InOrder(BiTree T){
 if(T != NULL) {
     InOrder(T->lChild);
     visit(T);
     InOrder(T->rChild);
 }
}
  1. 后序遍历:左、右、根。
void PostOrder(BiTree T){
 if(T != NULL) {
     PostOrder(T->lChild);
     PostOrder(T->rChild);
     visit(T);
 }
}
  1. 层序遍历

  2. 先序序列中序序列可唯一确定一棵二叉树。

  3. 后序序列中序序列可唯一确定一棵二叉树。

  4. 层序序列中序序列可唯一确定一棵二叉树。

  5. 前中后序遍历对左右孩子访问序列的相对位置不会改变。

  6. 遍历时叶子结点的先后顺序不会改变。

  7. n 个元素以先序序列进栈,可确定不同的二叉树为 1 n + 1 C 2 n n \frac{1}{n+1}C^n_{2n} n+11C2nn 个。

  8. 先序序列与中序序列相同( = 左根右 ⇒ \Rightarrow 该二叉树只有右子树。

  9. 先序序列与中序序列相反(根左右 = 左根右) ⇒ \Rightarrow 该二叉树只有左子树。

  10. 先序序列与后序序列相同(左右 = 左右 ⇒ \Rightarrow 该二叉树只有根结点。

  11. 先序序列与后序序列相反(根左右 = )或( = 左右根 ⇒ \Rightarrow 该二叉树高度等于结点个数。即结点只有左子树或右子树。

  12. 中序序列与后序序列相同(左根右 = ⇒ \Rightarrow 该二叉树只有左子树。

  13. 中序序列与后序序列相反(左根右 = 左右根 ⇒ \Rightarrow 该二叉树只有右子树。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大大da怪i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值