排序二叉树, 数据结构中的hello world

今年把两年前写的这篇文章重写了一遍。作为AlgoXY的第一章。
重写后,不要求读者懂任何一门特定的编程语言。全部算法提供了两种描述:
伪代码描述和数学函数描述。

有些地方给出了C++, Python, Haskell的代码片段,但是读者可以完全不懂这些具体的编程语言。

这一章主要希望说,BST实际上可以认为是数据结构这个世界中的 Hello world内容。
有些读者可能认为Array和Linked List这样更为基础的数据结构才是 Hello World,而轮不到二叉树。
这主要是由于,Array的纯函数实现是基于树的,其实比较难。所以我不得不把Array放到后继章节。

大致outline一下这章的内容:
- 通过一个10行的程序,展示Balanced BST如何把圣经中的所有词汇统计出来,使得读者感性认识BST的威力。
- 描述BST的逻辑数据结构
- BST的插入,为什么我们说BST是数据结构中的hello world
- 前序遍历,以及树排序,并给出一个很著名的面试题:给出BST的前序遍历和中序遍历结果,重建树
- 查找操作,包括lookup, min/max,以及succ/pred,并指出后者为imperative only的问题。前阵我在TL给
出过讨论;
- 删除操作,给出一个特别简洁的递归删除算法,并提出一个对称练习题。
- 随机构建,简述了随机构建的思路,并作为练习题留给读者。
- 附录和参考文献。

PDF可以从这里下载:https://sites.google.com/site/algoxy/bstree/bstree-en.pdf
web: https://sites.google.com/site/algoxy/bstree
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值