CS61B - Lec 21 - Binary Search Tree

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


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

Binary Search Trees

在这里插入图片描述
对于一个有序List,需要实现与查找有关的操作时,需要O(N)的复杂度,挺高的。怎么优化呢?
其实之前就想过这个问题。就像Deque结构一样,基本的思路是加入一些标记性的指针。
在这里插入图片描述
不断地在中间插入指针,并改变一些指针的方向,发现可以变为上图的树状结构,这就是一个基本二叉树。

二叉树的灵感来源还是二分查找算法。想到这我就有个问题:为什么会另外发明一个二叉树数据结构,而不是直接用二分法查找?

想了想,对于一组经常需要添加、删除操作的数据,需要查找 - 添加/删除 - 更新这三步。一个数组,查找一个值可以用二分法,复杂度跟二叉树一样,但是添加/删除复杂度就很高,拷过来拷过去的;一个链表,添加/删除很简单,但是查找就只能靠遍历。所以,综合以上两者的优势,才有了二叉树这种数据结构。

概念

在这里插入图片描述
何为树?总结一句话就是:两个节点间只存在一条路。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值