JTangming / blog

My repository on GitHub.
Other
53 stars 0 forks source link

二叉树 #32

Open JTangming opened 4 years ago

JTangming commented 4 years ago

二叉树特点

满二叉树

在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,则为满二叉树

完全二叉树

对于具有 n 个节点的二叉树,对于任何一个编号 i (1 <= i <= n),如果与同层级的满二叉树中编号为 i 的节点完全相同,则是完全二叉树。

注:满二叉树一定是完全二叉树,但反过来不一定成立。

二叉树的存储结构

顺序存储

二叉树的顺序存储结构就是使用一维数组存储二叉树中的结点,并且结点的存储位置,就是数组的下标索引。 如一颗完全二叉树如下: 顺序存储方式如下: 极端情况采用顺序存储的方式是十分浪费空间的,如:

二叉链表

二叉链表将结点数据结构定义为一个数据和两个指针域,如:

二叉树遍历

如这样一颗二叉树: 前序遍历输出为:ABDHIEJCFG 中序遍历输出为:HDIBJEAFCG 后序遍历输出为:HIDJEBFGCA 层次遍历结果为:ABCDEFGHIJ

JTangming commented 4 years ago

二叉查找树

又称二叉排序树,其特性:

如图: bst

查找规则

插入

删除

删除可以从以下三种情形来理解,如图: del-bst

注:图来自于极客时间《数据结构与算法之美》专栏

缺点或者说是局限性

二叉搜索树最坏情况可能是链表,相应的时间复杂度是 O(n) 级别

红黑树

红黑树是一种自平衡的二叉查找树,除了符合二叉查找树的基本特征外,还具备: