12、二叉树:如何存储二叉树

你好,我是王健伟。 聊过了二叉树的遍历问题,终于要开始写程序了,所以今天就来聊聊存储二叉树的几种方法。 二叉树的存储一般有两种方式,一种是基于数组的顺序存储方式,一种是链式存储方式。它们有什么不同呢? 顺序存储方式顺序存储方式是用一段连续的内存单元(...

快速上手C++数据结构与算法

13、线索二叉树:如何线索化二叉树以提升访问速度

你好,我是王健伟。 今天我要和你分享的主题是“线索二叉树”。 和传统二叉树相比,线索二叉树可以进一步提高访问二叉树节点的速度,从而提高访问二叉树的效率,当然,“线索”这个概念的引入也意味着要对原来的二叉树实现代码做出相应的修改。 那么,什么是线索?要...

快速上手C++数据结构与算法

14、二叉查找树(BST):查找速度你最行

你好,我是王健伟。 今天我要和你分享的主题是“二叉查找树”。 我们知道,二叉树是用来保存数据的。那么在需要的时候,这些保存在二叉树中的数据,要怎么才能被快速地找到和取出呢?这就需要在保存数据的时候遵循一定的规律。 遵循这种保存数据的规律所构成的二叉树...

快速上手C++数据结构与算法

15、平衡二叉树(AVL):平衡如此重要,怎么做到的

你好,我是王健伟。 上节课我们讨论了“二叉查找树”这个话题,最后提到,为了提高查找效率,应该尽可能地让二叉查找树的高度变得最小。也就是说,在创建二叉查找树的时候,要尽可能让二叉查找树保持左右节点的平衡。这就是“平衡二叉树”的由来。 平衡二叉树作为后续...

快速上手C++数据结构与算法

16、平衡二叉树(AVL):节点删除后的平衡性调整

你好,我是王健伟。 上节课我们了解了什么是平衡二叉树,也详细讲解了插入一个新的节点后如何保持该树仍旧是一颗平衡二叉树。本节课我将继续与你分享在删除一个平衡二叉树中的节点后如何保持平衡的话题。 平衡二叉树删除某个节点的操作与二叉查找树删除某个节点的操作...

快速上手C++数据结构与算法

17、红黑(R、B)树:和平衡二叉树有什么不同

你好,我是王健伟。 上次我和你分享了“平衡二叉树”这个话题,引出了“平衡性调整”的概念。主要目的是让这棵二叉树左右看起来比较“平衡”,不出现左子树很高、右子树很矮,或者左子树很矮、右子树很高的情形。这样,在进行节点的查找、插入、删除等操作时效率会比较...

快速上手C++数据结构与算法
1234510