![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
CodeChickenTom
博客每次更新的代码都放会放在:https://github.com/18260036169
展开
-
BST删除操作
BST的删除操作向来被认为难度很大,因为它不同于插入,定位到了那个该插入的位置选择左边/右边进行插入即可,而删除操作则需要分成以下三种情况进行讨论,删除难度从上到下依次递增:case1 叶子结点case2 只有左子树/只有右子树的结点case3 左子树和右子树都存在的结点其实case1,case2的难度系数都不大,重难点就是在于处理case3这种情况的结点case1 叶子结点直接将...原创 2020-04-09 03:48:42 · 3180 阅读 · 7 评论 -
读书笔记 --- 数据结构与算法分析C语言描述 --- 12.29 --- Chapter4 树 page 80 - 87
4.4 AVL树对一棵预先排序的树输入数据,一连串的insert操作将花费二次时间,解决这个问题其中一个办法就是有一个称为平衡(balance)的附加结构条件,任何结点深度均不能过深。AVL(Adelson-Velskii and Landis)树是带有平衡条件的二叉查找树。这个平衡条件固定且容易保持,需保证树的深度为O(log N)。我们一般将空子树高度定义为-1,加入我们要求结点左右子树...原创 2019-12-29 23:30:21 · 152 阅读 · 0 评论 -
读书笔记 --- 数据结构与算法分析C语言描述 --- 12.24 --- Chapter4 树 page76 - 79
4.3.5 delete结点情况对应解决方案没有任何儿子的结点此结点为BST中的叶结点,直接删除仅有一个儿子的结点类似于一个链表:grandfather->father->children中删除掉father结点的操作有两个儿子的结点找到右子树最小的结点代替被删除的结点,这个最小的结点为右子树中最左边的元素,因为最小的那个元素一定不会再有左儿子(...原创 2019-12-24 22:41:49 · 181 阅读 · 0 评论 -
读书笔记 --- 数据结构与算法分析C语言描述 --- 12.22 --- Chapter4 树 page70 - 76
4.2 二叉树二叉树每个结点至多有两个儿子,即可以拥有(0,1,2)个儿子。由此二叉树的平均深度要比N小得多,为O(sqrt(N)),再对于特殊类型的二叉树:二叉查找树(Binary Search Tree)深度平均值为O(log N)。而特殊情况就是二叉树是一棵斜树,为一个特殊的链表,深度可以达到N - 1。4.2.1 实现结点的儿子可以用指针指向他们,类似于一个双向链表。struct ...原创 2019-12-22 19:26:56 · 144 阅读 · 0 评论 -
读书笔记 --- 数据结构与算法分析C语言描述 --- 12.21 --- Chapter4 树 page65 - 69
4.0 引言为解决链表的线性访问时间过慢这个问题,介绍一种大部分操作时间平均为O(log N)的数据结构 — 树第二种修改,对于长的指令序列每种操作的运行时间基本上是O(log N) — 二叉查找树(Binary Search Tree)树在cs中是非常有用的抽象概念,本章我们将学习:树在操作系统中的文件系统的应用树如何能够用来计算算术表达式的值(常考)树支持O(log N)进行...原创 2019-12-21 20:36:03 · 229 阅读 · 0 评论