红黑树定义: 红黑树是一种自平衡二叉查找树,红黑树和AVL都是BST(二叉排序树)的平衡版本,相比于AVL的完全平衡,红黑树只要求局部平衡,因此当向红黑树插入和删除结点时,需要调整的比AVL要少,统计性能要高于AVL树,C++ STL中的map、set、multimap和multiset都应用了红黑 ...
分类:
其他好文 时间:
2018-08-21 22:38:06
阅读次数:
202
平衡二叉树的定义: 任意的左右子树高度差的绝对值不超过1,将这样的二叉树称为平衡二叉树,二叉平衡树前提是一个二叉排序树。 平衡二叉树的插入: 二叉平衡树在插入或删除一个结点时,先检查该操作是否导致了树的不平衡,若是,则在该路径上查找最小的不平衡树,调节其平衡。 4种平衡调整如下(结点的数字仅作标记作 ...
分类:
其他好文 时间:
2018-08-21 21:06:56
阅读次数:
604
概念 二叉排序树,又称二叉查找树。它或者是一棵空树,或者是具有下列性质的二叉树: ①若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值。 ② 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值。 ③ 它的左右子树也分别为二叉排序树。 ...
分类:
编程语言 时间:
2018-08-20 15:40:20
阅读次数:
149
前提 二叉排序树 一:定义 二:操作 查找 /* BiTree T 我们要搜索的二叉树 ElemType key我们要搜索的关键字 BiTree F 记录下我们的当前搜索子树的双亲结点 BiTree* P 当我们插入之前,会先搜索是否存在数据,若存在,不插入,若不存在,我们通过这个可以获取我们要插入 ...
分类:
编程语言 时间:
2018-08-20 11:39:07
阅读次数:
220
考纲中,平衡二叉树在“查找”章节,要求为:平衡二叉树概念 一:定义: 平衡二叉树(AVL树)是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1. 意思就是:要么是一颗空树,要么它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1. 平衡因子:将二叉树上节点的左 ...
分类:
其他好文 时间:
2018-08-16 20:58:24
阅读次数:
99
考纲中,二叉排序树在“查找”章节,要求为:二叉排序树及其基本操作。 其基本操作有:查找操作,插入操作,删除操作 一:定义 二叉排序树(Binary Sort Tree),又称二叉查找树,它是一颗空树,或者是具有以下性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值。 若它的 ...
分类:
编程语言 时间:
2018-08-15 22:43:38
阅读次数:
213
数据结构 栈,队列,链表 ?哈希表,哈希数组 ?堆,优先队列 双端队列 可并堆 左偏堆 ?二叉查找树 Treap 伸展树 ?并查集 集合计数问题 二分图的识别 ?平衡二叉树 ?二叉排序树 ?线段树 一维线段树 二维线段树 ?树状数组 一维树状数组 N维树状数组 ?字典树 ?后缀数组,后缀树 ?块状链 ...
分类:
编程语言 时间:
2018-08-10 15:59:19
阅读次数:
175
递归思想
如果root为NULL,创建结点并返回到调用点。
root不为空,key小于root-data则递归到左孩子,直到root==NULL,创建结点,返回到上次调用点把返回值(root)给调用点的左孩子
root不为空,key大于root-data则递归到右孩子,直到root==NULL,创建结点,返回到上次调用点把返回值(root)给调用点的右孩子
分类:
编程语言 时间:
2018-08-09 18:31:39
阅读次数:
157
二叉排序树的查找很简单,key值与当前结点值比较,比当前结点值小,key的值只能存在当前结点的左子树里,否则,key值只能存在当前结点的右子树;直到找的key或可以为NULL
分类:
编程语言 时间:
2018-08-09 17:39:05
阅读次数:
108
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;(3)左、右子树也分别为二叉排序树;
创建时先给根结点复制,左右孩子为空,创建孩子节点时,
1.先判断当前的孩子结点属于根的 左子树还是右子树(当前结点已经确定是左子树还是右子树)判断时会创建当前结点的父节点
2.再判断当前的孩子结点时父节点的左孩子还是右孩子
分类:
编程语言 时间:
2018-08-07 13:04:06
阅读次数:
117