数据结构

数据结构

什么是链表及链表的内存分配:

链表是Linux内核中最简单、最普通的数据结构。链表是一种存放和操作可变量元素(常称为节点)的数据结构。链表和静态数组的不同之处在于,它所包含的元素都是动态创建并插入链表的,在编译时不必知道具体需要创建多少个元素。另外也因为链表中每个元素的创建时间各不相同,所以它们在内存中无须占用连续内存区。正是因为元素不连续地存放,所以各元素需要通过某种方式被连接在一起。于是每个元素都包含一个指向下一个元素的指针,当有元素加入链表或从链表中删除元素时,简单调整指向下一个节点的指针就可以了。

二叉树:

树结构是一个能提供分层的树型数据结构的特定数据结构。在数学意义上,树是一个无环的、连续的有向树,其中任何一个顶点(在树里叫节点)具有0个或者多个出边以及0个或者1个入边。一个二叉树是每个节点最多出现只有两个出边的树-也就是,一个树,其节点具有0个、1个或者2个子节点。

二叉搜索树:

一个二叉搜索树(通常简称为BST)是一个节点有序的二叉树,其顺序通常遵循下列法则:
- 根的左分支节点值都小于根节点值。
- 右分支节点值都大于根节点值。
- 所有的子树也都是二叉搜索树。
因此,一个二叉搜索树所有节点必然都有序,且左子节点小于其父节点值,而右节点大于其父节点值的二叉树。所以,在树中搜索一个给定值或者按续遍历树都相当快捷。

自平衡二叉搜索树:

一个节点的深度是指从其根节点起,到达它一共需经过的父节点数目。处于底层的节点(再也没有子节点)称为叶子节点。一个树的高度是指树中的处于最底层节点的深度。一个平衡二叉树是一个所有叶子节点深度都不超过1的二叉搜索树。一个自平衡二叉搜索树是指其操作都试图维持(半)平衡的二叉搜索树。
- 1.红黑树:
红黑树是一种自平衡二叉树。Linux主要的平衡二叉树数据结构就是红黑树。红黑树具有特殊的着色属性,或红色或黑色。红黑树因遵循下面六个属性,所以能维持半平衡结构:
- 1.所有的节点要么着红色,要么着黑色。
- 2.叶子节点都是黑色。
- 3.叶子节点不包含数据。
- 4.所有非叶子节点都有两个子节点。
- 5.如果一个节点是红色,则它的子节点都是黑色。
- 6.在一个节点到其叶子节点的路径中,如果总是包含同样数目的黑色节点,则该路径相比其他路径是最短的。
上述条件,保证了最深的叶子节点的深度不会大于两倍的最浅子节点的深度。所以,红黑树总是半平衡的。
- 2.rbtree:
Linux实现的红黑树称为rbtree。它类似于前面所描述的经典红黑树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值