树(Tree)——《啊哈!算法》

什么是树?树是一种特殊的图,不包含回路的连通无向树。

正因为树有着“不包含回路”这个特点,所以树就被赋予了很多特性。

  1. 一棵树中的任意两个结点有且仅有唯一的一条路径连通。
  2. 一棵树如果有n个结点,那么它一定恰好有n-1条边。
  3. 在一棵树中加一条边将会构成一个回路。

一棵树有且只有一个根结点。

  • 没有父结点的结点称为根结点(祖先)。
  • 没有子结点的结点称为叶结点
  • 如果一个结点既不是根结点也不是叶结点,称为内部结点

二叉树

二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多只有两棵子树。

严格的递归定义:二叉树要么为空,要么由根结点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。

有两种特殊的二叉树:

  • 如果二叉树中每个内部结点都有两个儿子,这样的二叉树叫做满二叉树一棵深度为h且有(2^h)-1个结点的二叉树。
  • 如果一棵二叉树除了最右边位置上有一个或者几个叶结点缺少外,其他都是丰满的,那么这样的二叉树叫做完全二叉树若设二叉树的高度为h,除了第h层外,其他各层(1~h-1)的结点数都达到最大个数,第h层从右向左连续缺若干结点。

满二叉树是一种特殊的或者极其完美的完全二叉树。

一种特殊的完全二叉树。

  • 如果所有父结点比子结点小,称为最小堆。
  • 如果所有父结点比子节点大,称为最大堆。

二叉查找树(二叉排序树)

  1. 左子树上所有的结点的值均小于或者等于它的根结点的值
  2. 有子树上所有的结点的值均大于或者等于它的根节点的值
  3. 左右子树也一定分别为二叉查找树

红黑树(平衡二叉查找树)

防止单链查找树的出现。

  1. 结点是红色或者黑色
  2. 根结点是黑色
  3. 每个叶子结点都是黑色的空结点(NULL)
  4. 每个红色结点的两个子结点都是黑色的
  5. 从任意结点到其每个叶子节点的所有路径都包含相同的黑色节点。

通过变色和旋转(左、右)调整和维持红黑树平衡。

变色

为了重新符合红黑树的规则,尝试把红色结点变为黑色,或者把黑色结点变为红色。

左旋转

逆时针旋转红黑树的两个结点,使得父结点被自己的右孩子取代,而自己成为自己的左孩子。

右旋转

顺时针旋转红黑树的两个结点,使得父结点被自己的左孩子取代,而自己成为自己的右孩子

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值