二叉树

来源:互联网 发布:pc端护眼软件 编辑:程序博客网 时间:2024/04/30 23:10

(1)二叉树的概念

在计算机领域,二叉树是每个节点最多有两个字数的结构。通常子树被称为左子树和右子树。

有如下特例

满二叉树

满二叉树是完全二叉树的特例。

(1)所有叶节点必须在同一层上

(2)除了叶子节点的所有节点都有两个子节点

完全二叉树

完全二叉树可以看成是满二叉树的最后一行右侧部分连续缺失

平衡二叉树

对于任何一个节点,左树和右树的绝对值差不超过1

(2)遍历

以如下例子说明
这里写图片描述
前序遍历

首先遍历根节点,然后是根节点的左侧节点,然后继续遍历左侧节点的左侧节点,…一直到最左边的叶节点。然后后退一层,访问右节点,然后继续后退一层。

简单来说就是先根节点,然后左节点,最后右节点。

A B C D E F G

中序遍历

从根节点开始找,如果根节点有左侧节点,就将寻找的指针向左侧移动。

首先是左节点,然后是根节点,最后是右节点

其实反过来更好理解。

任何一个右节点都不能被遍历如果有下列两者之一

(1)对应父节点没有被遍历

(2)对应的左节点没有被遍历

对于任何一个非叶节点都不能被遍历如果:

对应的左子节点没有被遍历。

C B D A E G F

注意,如果有多个节点符合被遍历的条件,离最后一个遍历点最近的点先被遍历。

后序遍历

首先是左节点,然后是右节点,最后是根节点

和上面的道理类似。

C D B G F E A

(3)应用

二叉排序树

(1)若左子树非空,则左子树的所有节点小于他的根节点

(2)若右子树飞控,则右子树的所有节点大于他的根节点

(3)左右子树也都是二叉排序树
显然排序二叉树可以用作排序,也可以用作快速查找和插入。一般来讲排序算法的时间复杂度为Nlog2N
查找算法的时间复杂度为log2N

0 0
原创粉丝点击