Lec 21 - BST
从Lec20开始,就转战CS61B Spring 2019了,18后面全变成公开课了。
本章主要讲的是Binary Search Tree,是一种非常流行的数据结构,据说各大面试中都会出现。其中用到了超多的recursion思想。
Binary Search Trees

对于一个有序List,需要实现与查找有关的操作时,需要O(N)的复杂度,挺高的。怎么优化呢?
其实之前就想过这个问题。就像Deque结构一样,基本的思路是加入一些标记性的指针。

不断地在中间插入指针,并改变一些指针的方向,发现可以变为上图的树状结构,这就是一个基本二叉树。
二叉树的灵感来源还是二分查找算法。想到这我就有个问题:为什么会另外发明一个二叉树数据结构,而不是直接用二分法查找?
想了想,对于一组经常需要添加、删除操作的数据,需要查找 - 添加/删除 - 更新这三步。一个数组,查找一个值可以用二分法,复杂度跟二叉树一样,但是添加/删除复杂度就很高,拷过来拷过去的;一个链表,添加/删除很简单,但是查找就只能靠遍历。所以,综合以上两者的优势,才有了二叉树这种数据结构。
概念

何为树?总结一句话就是:两个节点间只存在一条路。

本文深入探讨了二叉搜索树(Binary Search Tree)这一高效数据结构,解释了其在查找、插入、删除操作上的优势,尤其是在频繁进行这些操作的场景下。通过对比数组和链表,阐述了二叉树如何结合两者优点,实现O(log N)的时间复杂度。文章还详细解析了二叉树的递归实现方法,包括查找、插入和删除节点的具体步骤。
最低0.47元/天 解锁文章
547

被折叠的 条评论
为什么被折叠?



