对二叉树的一些总结

本文深入探讨了二叉树的各种类型,包括满二叉树、完全二叉树和平衡二叉树,阐述了它们的特性与应用。此外,还介绍了二叉排序树(BST)的概念及其在查找性能上的优势,以及哈夫曼树在数据压缩中的作用。通过对四种遍历方式的解析,展示了二叉树操作的基础与效率。
摘要由CSDN通过智能技术生成


树的一些重要的名词解释

  1. 高度:当前节点到叶子节点的最长路径
  2. 深度:根节点到当前节点经过的边数
  3. 层数:节点的深度+1 树的高度:即根节点的高度(就是根节点到叶子节点的最长路径)
  4. 父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点
  5. 子节点:一个节点包含的子树节点
  6. 兄弟节点:具有相同父节点的节点称为兄弟节点
  7. 叶节点:没有子节点的节点(也叫页子节点)

二叉树

二叉树的性质

  • 二叉树中,第 i 层最多有 2^(i - 1) 个结点。
  • 如果二叉树的深度为 K,那么此二叉树最多有 2^K-1 个结点。
  • 二叉树中,叶子结点数为 n0,度为 2 的结点数为 n2,则 n0=n2+1(推导公式 : n0+n1+n2=n1+2*n2+1 =》n0=n2+1)

满二叉树

满二叉树除了满足普通二叉树的性质,还具有以下性质:

  • 满二叉树中第 i 层的节点数为 2^(n-1)个。
  • 深度为 k 的满二叉树必有 2 ^k-1 个节点 ,叶子数为 2 ^ (k-1)。
  • 满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在最底层。
  • 具有 n 个节点的满二叉树的深度为 log2(n+1)。

完全二叉树

如果二叉树中最后一层节点未满,但最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。
在这里插入图片描述
完全二叉树除了具有普通二叉树的性质,它自身也具有一些独特的性质

  • n 个结点的完全二叉树的深度为 ⌊log2n⌋+1。

  • 对于任意一个结点 i ,完全二叉树还有以下几个结论成立:

    • 当 i>1 时,父亲结点为结点 [i/2] 。(i=1 时,表示的是根结点,无父亲结点)
    • 如果 2i>n(总结点的个数) ,则结点 i 肯定没有左孩子(为叶子结点);否则其左孩子是结点 2i 。
    • 如果 2i+1>n ,则结点 i 肯定没有右孩子;否则右孩子是结点 2i+1 。

四种遍历方式

先序遍历
中序遍历
后序遍历
层序遍历

时间复杂度:O(N)

二叉排序树BST(Binary Search Tree)

有什么用?
目的是为了提高查找的性能,使其查找在平均和最坏的情况下都是logn级别,接近二分查找.

什么样才叫二叉排序树?

  • 如果它的左子树不为空,那么左子树上的所有结点的值均小于它的根结点的值
  • 如果它的右子树不为空,那么右子树上的所有结点的值均大于它的根结点的值
  • 根结点的左子树和右子树也都是二叉排序树

重要特点:
中序遍历二叉排序树便可得到一个有序序列

严格平衡二叉树

平衡二叉树也称为AVL树,在二叉搜索树的基础上,平衡二叉树还需要满足如下条件:

  • 左右两个子树的高度差(平衡因子)的绝对值不超过1
  • 左右两个子树都是一棵平衡二叉树

为什么需要
二叉查找树可能不平衡,计算情况下退化为链表。
平衡二叉树的目的就是为了在二叉查找树的基础上保证平衡性。提高查找速度。

缺点:
虽然查询更快了,但是保证平衡的自旋使得增删性能低下。

平衡因子
节点的左子树的高度减去右子树的高度(反之同理).
由此可知平衡二叉树是每个结点的平衡因子都为 1、-1、0 的二叉排序树,所以平衡二叉树一定是二叉搜索树.

插入元素若出现不平衡怎么办呢?
自旋
根据新插入的结点与最低不平衡结点的位置关系进行相应的调整。分为LL型、RR型、LR型和RL型4种类型,详见

哈夫曼树

前置知识
在这里插入图片描述

  • 路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。从根结点到结点 a 之间的通路就是一条路径。
  • 路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。
  • 结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。图 1 中结点 a 的权为 7,结点 b 的权为 5。
  • 结点的带权路径长度:指的是从根结点到该结点之间的路径长度与该结点的权的乘积。图 1 中结点 b 的带权路径长度为 2 * 5 = 10 。
  • 树的带权路径长度:为树中所有叶子结点的带权路径长度之和。通常记作 “WPL”。
    例如图 1 中所示的这颗树的带权路径长度为WPL = 7 * 1 + 5 * 2 + 2 * 3 + 4 * 3

什么是哈夫曼树
当用 n 个结点试图构建一棵树时,所有能构建的树中带权路径长度最小的那颗树。

要使树的带权路径长度最小,只需要遵循一个原则:权重越大的结点离树根越近

哈夫曼编码
哈夫曼编码就是在哈夫曼树的基础上构建的,这种编码方式最大的优点就是用最少的字符包含最多的信息内容。

根据发送信息的内容,通过统计文本中相同字符的个数作为每个字符的权值,建立哈夫曼树。对于树中的每一个子树,统一规定其左孩子标记为 0 ,右孩子标记为 1 。这样,用到哪个字符时,从哈夫曼树的根结点开始,依次写出经过结点的标记,最终得到的就是该结点的哈夫曼编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值