一、二叉查找树 1、简介 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值均大于于根节点的值. 任意节点的左右子树也分别是二叉查找树. 没有键值相等的节点. 2、局限性及应用 一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链.如下图: b图为一个普通的二叉查找树,大家看a图,如果我们的根节点选择是最小或者最大的数,那么二叉查找树就完全退化成了线…

2018年6月22日 0条评论 23点热度 阅读全文

一、二叉查找树 1、简介 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值均大于于根节点的值. 任意节点的左右子树也分别是二叉查找树. 没有键值相等的节点. 2、局限性及应用 一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链.如下图: b图为一个普通的二叉查找树,大家看a图,如果我们的根节点选择是最小或者最大的数,那么二叉查找树就完全退化成了线…

2018年6月22日 0条评论 11点热度 阅读全文

一、二叉查找树 1、简介 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 任意节点左子树不为空,则左子树的值均小于根节点的值. 任意节点右子树不为空,则右子树的值均大于于根节点的值. 任意节点的左右子树也分别是二叉查找树. 没有键值相等的节点. 2、局限性及应用 一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链.如下图: b图为一个普通的二叉查找树,大家看a图,如果我们的根节点选择是最小或者最大的数,那么二叉查找树就完全退化成了线…

2018年6月22日 0条评论 3点热度 阅读全文

1、定义   红黑树是一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是red或black。红黑树满足以下五个性质: 1. 每个结点或是红色或是黑色; 2. 根结点是黑色; 3. 每个叶结点是黑的; 4. 如果一个结点是红的,则它的两个儿子均是黑色; 5. 每个结点到其子孙结点的所有路径上包含相同数目的黑色结点。   当对红黑树进行插入和删除操作时,可能会破坏红黑树的五个性质。为了保证红黑树的性质,需要进行变色和旋转。 2、插入和删除 (1)插入   情况1:插入结点z的父结点为红色,而z的叔叔结点…

2018年6月22日 0条评论 13点热度 阅读全文

1、定义   在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。   核心思想是空间换时间,利用字符串的公共前缀来减少无谓的字符串比较以达到提高查询效率的目的。 2、性质 1. 根节点不包含字符,除根节点以外每个节点只包含一个…

2018年6月22日 0条评论 3点热度 阅读全文

一、AVL树的特征   虽说二叉查找树是一种优秀的数据结构,能够大大降低数据查询的复杂度。但是,并不是说有情况下二叉树都能够达到快速查找的目的。   我们发现,如果按照[7,10,11,12,14,15,18]这样的顺序一个个元素进行插入的话就会出现右图所示的二叉树,这样的二叉树跟一个链表几乎是没有区别的,查找的效率一样,没有体现出二叉树的优势。出现这种原因是构建二叉树的过程中没有平衡节点的左右子树的高度。根节点7的右子树有很高的深度,但是左子树是空的。我们需要的是一棵左右节点平衡的二叉树,而其中一种传统的平衡二叉…

2018年5月21日 0条评论 13点热度 阅读全文

一、AVL树的特征   虽说二叉查找树是一种优秀的数据结构,能够大大降低数据查询的复杂度。但是,并不是说有情况下二叉树都能够达到快速查找的目的。   我们发现,如果按照[7,10,11,12,14,15,18]这样的顺序一个个元素进行插入的话就会出现右图所示的二叉树,这样的二叉树跟一个链表几乎是没有区别的,查找的效率一样,没有体现出二叉树的优势。出现这种原因是构建二叉树的过程中没有平衡节点的左右子树的高度。根节点7的右子树有很高的深度,但是左子树是空的。我们需要的是一棵左右节点平衡的二叉树,而其中一种传统的平衡二叉…

2018年5月21日 0条评论 25点热度 阅读全文

一、AVL树的特征   虽说二叉查找树是一种优秀的数据结构,能够大大降低数据查询的复杂度。但是,并不是说有情况下二叉树都能够达到快速查找的目的。   我们发现,如果按照[7,10,11,12,14,15,18]这样的顺序一个个元素进行插入的话就会出现右图所示的二叉树,这样的二叉树跟一个链表几乎是没有区别的,查找的效率一样,没有体现出二叉树的优势。出现这种原因是构建二叉树的过程中没有平衡节点的左右子树的高度。根节点7的右子树有很高的深度,但是左子树是空的。我们需要的是一棵左右节点平衡的二叉树,而其中一种传统的平衡二叉…

2018年5月21日 0条评论 7点热度 阅读全文

一、二叉查找树(BST) 1、二叉查找树的特征   二叉查找树(BST)也称为二叉搜索树或二叉排序树。二叉查找树的节点包含键值key。二叉查找树或者是一棵空树,否则要求: 1. 若它的左子树不为空,那么左子树上所有节点的key都小于根节点的key。 2. 若它的右子树不为空,那么右子树上所有节点的key都大于根节点的key。 3. 它的左右子树也分别为二叉排序树。 2、二叉查找树的建立、查找、插入和删除 (1)递归建立二叉查找树 btree creat_tree(btree root, int val) { if …

2018年5月18日 0条评论 29点热度 阅读全文

一、二叉查找树(BST) 1、二叉查找树的特征   二叉查找树(BST)也称为二叉搜索树或二叉排序树。二叉查找树的节点包含键值key。二叉查找树或者是一棵空树,否则要求: 1. 若它的左子树不为空,那么左子树上所有节点的key都小于根节点的key。 2. 若它的右子树不为空,那么右子树上所有节点的key都大于根节点的key。 3. 它的左右子树也分别为二叉排序树。 2、二叉查找树的建立、查找、插入和删除 (1)递归建立二叉查找树 btree creat_tree(btree root, int val) { if …

2018年5月18日 0条评论 5点热度 阅读全文