Java数据结构和算法:第8章

2019-07-05  本文已影响0人  KaveeDJ

二叉树

8.1 为什么使用二叉树

8.1.1 在有序数组中插入数据项太慢

8.1.2 在链表中查找太慢

8.1.3 用树解决问题

要是能有一种数据结构,既能像链表那样快速的插入和删除,又能像有序数组那样快速查找,那样就好了。实现了这些特点,成为最有意思的数据结构之一。

8.1.4 树是什么

8.2 树的术语

8.2.1 路径

8.2.2 根

8.2.3 父节点

8.2.4 子节点

8.2.5 叶节点

8.2.6 子树

8.2.7 访问

8.2.8 遍历

8.2.9 层

8.2.10 关键字

8.2.11 二叉树

8.3 一个类比

8.4 二叉搜索树如何工作

8.4.1 BinaryTree专题applet

8.4.2 用Java代码表示树

8.5 查找节点

8.5.1 使用专题applet查找一个节点

8.5.2 查找节点的Java代码

8.5.3 树的效率

8.6 插入一个节点

8.6.1 使用专题applet插入一个节点

8.6.2 插入一个节点的Java代码

8.7 遍历树

8.7.1 中序遍历

8.7.2 遍历的Java代码

8.7.3 遍历一颗三节点树

8.7.4 用专题applet遍历

8.7.5 前序和后序遍历

8.8 查找最大值和最小值

顺便说一下,在二叉搜索树中得到最大值最小值是轻而易举的事情。

8.9 删除节点

8.9.1 情况1:删除没有子节点的节点

image.png

8.9.2 情况2:删除有一个子节点的节点

image.png

8.9.3 情况3:删除有两个子节点的节点

  1. 对于有两个子节点的简单情况:用中序后继替代


    image.png
  2. 后继是右子节点:右子节点子树上移


    image.png
  1. 后继是右子节点的左子后代


    image.png

8.10 二叉树的效率

8.11 用数组表示树

8.12 重复关键字

8.13 完整的tree.java程序

8.14 哈夫曼(Huffman)编码

8.14.1 字符编码

8.14.2 用哈夫曼树解码

8.14.3 创建哈夫曼树

8.14.4 信息编码

8.14.5 创建哈夫曼编码

上一篇下一篇

猜你喜欢

热点阅读