美文网首页《算法图解》读书笔记
《算法图解》11.1读书笔记

《算法图解》11.1读书笔记

作者: 小邱同学_ | 来源:发表于2023-04-03 14:58 被阅读0次

        二叉查找树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。


一.原理

        二叉搜索树(BST)又称二叉查找树或二叉排序树。一棵二叉搜索树是以二叉树来组织的,可以使用一个链表数据结构来表示,其中每一个结点就是一个对象。一般地,除了key和位置数据之外,每个结点还包含属性lchild、rchild和parent,分别指向结点的左孩子、右孩子和双亲(父结点)。如果某个孩子结点或父结点不存在,则相应属性的值为空(NULL)。根结点是树中唯一父指针为NULL的结点,而叶子结点的孩子结点指针也为NULL。


二.结构

二叉搜索树是能够高效地进行如下操作的数据结构。

1.插入一个数值

2.查询是否包含某个数值

3.删除某个数值


三.性质

设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点,那么y.key≤x.key。如果y是x右子树中的一个结点,那么y.key≥x.key。

在二叉搜索树中:

1.若任意结点的左子树不空,则左子树上所有结点的值均不大于它的根结点的值。

2. 若任意结点的右子树不空,则右子树上所有结点的值均不小于它的根结点的值。

3.任意结点的左、右子树也分别为二叉搜索树。


四.复杂度

不论哪一种操作,所花的时间都和树的高度成正比。因此,如果共有n个元素,那么平均每次操作需要O(logn)的时间。


五.算法实现

二叉排序树的操作主要有:

1.查找:递归查找是否存在key。

2.插入:原树中不存在key,插入key返回true,否则返回false。

3.构造:循环的插入操作。

4.删除:

(1)叶子节点:直接删除,不影响原树。

(2)仅仅有左或右子树的节点:节点删除后,将它的左子树或右子树整个移动到删除节点的位置就可以,子承父业。

(3)既有左又有右子树的节点:找到须要删除的节点p的直接前驱或者直接后继s,用s来替换节点p,然后再删除节点s。

相关文章

  • 算法图解读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 算法图解 读书笔记

    date: 2017-9-16 11:11:15title: 算法图解读书笔记 算法图解: http://www....

  • 《算法图解》note 11 总结

    这是《算法图解》的第十一篇读书笔记,是一篇总结。经过1个月的时间,终于把《算法图解》看完了。个人认为,《算法图解》...

  • 《算法图解》note 10 K近邻算法

    这是《算法图解》第十篇读书笔记,内容主要是K邻近算法的介绍。 1.K近邻算法简介 K近邻算法(K-nearest ...

  • 读书笔记:图解算法

    读书笔记:图解算法 算法简介 二分查找 O(log n) 大O表示法 大O表示法 让你能够比较操作数,它指出了算法...

  • 《算法图解》note 8 贪婪算法

    这是《算法图解》的第八篇读书笔记,主要内容是贪婪算法的简介。 1.定义 贪婪算法()是指在解决问题的每一个步骤中,...

  • 《算法图解》note 7 狄克斯特拉算法

    这是《算法图解》的第7篇读书笔记。其主要内容是简述狄克斯特拉算法。 1.狄克斯特拉算法简介 迪克斯特拉(dijks...

  • 《算法图解》读书笔记

    《算法图解》读书笔记 二分查找 算法实现: ​ 在有序列表中查找一个数,每次都与有序列表的中间数比较,如果不同...

  • 《算法图解》NOTE 1 算法的渐近表示法以及二分法

    这是《算法图解》的第一篇读书笔记,内容关于表示算法复杂度的渐近表示法以及一个简单但高效的算法:二分法。 1 .渐近...

  • 《算法图解》读书笔记

    章节目录: 算法简介为阅读后续内容打下基础编写第一种查找算法—二分查找学习如何谈论算法的运行时间—大O表示法。了解...

网友评论

    本文标题:《算法图解》11.1读书笔记

    本文链接:https://www.haomeiwen.com/subject/pywehdtx.html