数据结构——5、树——1、二叉树

1.1.1 *二叉树*

1.1.1.1 *二叉树特点*

1、 每个节点最多有两个子树,所以二叉树不存在度小于2的节点

2、 左子树和右子树是有顺序的,次序不能任意颠倒

3、 即使树中某节点只有一个子树,也要区分它是左子树,还是右子树

1.1.1.2 *二叉树代码*

考察是否会写递归:即在方法中调用自身的方法

二叉树包括:

前序遍历:输出顺序是:根节点、左子树、右子树

中序遍历:左子树、根节点、右子树

后序遍历:左子树、右子树、根节点

代码:

1.1.1.3 *各种树特点说明*

二叉树衍生出:

B树(B Tree)、B+树(B+ Tree)、二叉搜索树(Binary Search Tree,也叫二叉查找树)、平衡二叉树(AVL Tree)、

注意:二叉搜索树或二叉平衡树,与B树不是一个树

1.1.1.3.1 *二叉树(Binary Tree)*

1、二叉树是每个节点最多有两个子节点的树。

2、二叉树的叶子节点有0个子节点,二叉树的根节点或者内部节点有一个或者两个子节点。

1.1.1.3.2 *二叉搜索树(Binary Search Tree)*

二叉查找树又叫二叉搜索树,

它或者是一棵空树,或者是具有下列性质的二叉树:

若它的左子树不空,则左子树上所有结点的值,均小于它的根结点的值;

若它的右子树不空,则右子树上所有结点的值,均大于它的根结点的值;

它的左、右子树也分别为二叉搜索树。

1.1.1.3.3 *平衡二叉树(AVL Tree)*

AVL树全称G.M. Adelson-Velsky和E.M. Landis,这是两个人的人名。

AVL树定义:

所有节点的左右子树的高度差小于1的二叉树。

如下图:

img

根节点左边高度是3,因为左边最多有3条边;右边高度而2,相差1.

根节点左边的节点50的左边是1条边,高度为1,右边有两条边,高度为2,相差1。

1.1.1.3.4 *B树(B tree)*

B树也叫或B-树、B_树。

一个m阶的B树具有如下几个特征:

1、 根结点至少有两个子女。

2、 每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m

3、 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

4、 所有的叶子结点都位于同一层。

5、 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

1.1.1.3.5 *B+树(B+ tree)*

B+树是从B树衍生而来。

跟B的不同:

1、B+树非叶子节点不存放数据,只存放keys。

2、B+树的叶子节点之间存在指针相连,而且是单链表

其实,B+树是二叉搜索树的扩展,二叉搜索树是每次一分为二,B树是每次一分为多

现代操作系统中,磁盘的存储结构使用的是B+树机制,mysql的innodb引擎的存储方式也是B+树机制

posted on 2021-09-28 10:22  夜萤火虫和你  阅读(183)  评论(0编辑  收藏  举报

导航