`
liuxinyu95
  • 浏览: 30061 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

排序二叉树, 数据结构中的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
分享到:
评论
1 楼 liuxinyu95 2011-04-21  
GitHub上公开了原稿:
https://github.com/liuxinyu95/AlgoXY
内容由GNU FDL保护,源代码由GNU GPLv3保护。

相关推荐

    C语言数据结构之平衡二叉树(AVL树)实现方法示例

    本文实例讲述了C语言数据结构之平衡二叉树(AVL树)实现方法。分享给大家供大家参考,具体如下: AVL树是每个结点的左子树和右子树的高度最多差1的二叉查找树。 要维持这个树,必须在插入和删除的时候都检测是否出现...

    algorithms:算法

    二叉树-每个节点都有0-2个子节点的树数据结构 完整的二叉树-每个级别(除最后一个级别外)都已满,所有节点都尽可能地靠左 堆-遵循“堆属性”规则的树数据结构 最大堆-父节点值> =子值 最小堆-父节点值<=子值 二...

    50个优秀经典PHP算法大集合

    │ ├── Structure 数据结构 │ │ ├── StackExample.php 堆栈 先进后出 LIFO (Last In First Out) │ │ ├── LinearChain.php 线性表 单链存储 │ │ └── LinearOrder.php ...

    java-testbed:该存储库包含示例程序,以展示Java语言功能

    欢迎使用JavaTests 这是Java 8测试项目,其中包含有关新Java功能的工作示例。 DataStructure示例: 二叉树,自定义Java列表,气泡排序,深度优先搜索 ... 选择要运行的测试:a)Java注释b)Java Lambda c)数据结构

    THE C PROGRAMMING LANGUAGE,2nd(ENGLISH TEXT VERSION)

    难以置信的是,这样一本C语言的入门书籍,从hello world开始讲起,却在短小的篇幅里,手把手教你写了stdio.h stdlib.h string.h当中大部分例程,实现了二分查找、快速排序、二叉树、哈希表这些重要的数据结构和算法...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

    宋劲彬的嵌入式C语言一站式编程

    2.2. 排序二叉树 3. 哈希表 27. 本阶段总结 III. Linux系统编程 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap ...

    Java面试宝典2010版

    比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办? 12、在weblogic中发布ejb需涉及...

    最新Java面试宝典pdf版

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    Java面试笔试资料大全

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    C/C++笔试题(附答案,华为面试题系列)

    答:编译器自动对齐的原因:为了提高程序的性能,数据结构(尤其是栈)应该尽可能 地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问 ;然而,对齐的内存访问仅需要一次访问。 20 int...

    Java面试宝典-经典

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    JAVA面试宝典2010

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    java面试题大全(2012版)

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

    Java面试宝典2012版

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、...

    java面试宝典2012

    5、说明生活中遇到的二叉树,用java实现二叉树 73 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 78 7、写一个Singleton出来。 81 8、递归算法题1 84 9、递归...

    Java面试宝典2012新版

    5、说明生活中遇到的二叉树,用java实现二叉树 66 6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序: 71 7、写一个Singleton出来。 75 8、递归算法题1 77 9、递归...

Global site tag (gtag.js) - Google Analytics