二叉树

来源:互联网 发布:企业社交网络 编辑:程序博客网 时间:2024/05/21 15:41

二叉树:

(1)相关的概率:

  1. 双亲
  2. 兄弟
  3. 祖先
  4. 后代
  5. 子树
  6. 结点的左子树和右子树
  7. 结点的深度
  8. 树的深度(高度)
  9. 满二叉树:满二叉树一定是完全二叉树。
  10. 完全二叉树:叶子结点数最多为2^n,总的结点数最多2^(n+1)-1 .
(2)二叉树的数组存储方式:
  1. 根结点:array[0].
  2. 双亲的位置:[(i-1)/2].
  3. 左孩子:[2i+1].
  4. 右孩子:[2i+2].
(3)遍历二叉树:
  1. 前序遍历:根->左->右。
  2. 中序遍历:左->根->右。
  3. 后序遍历:左->右->根。
  4. 使用缩排打印一棵树以显示深度:使用前序遍历。
(4)二叉查找树:
  1. 全序语义的定义:一个类的全序语义要定义6种比较操作符(==,!=,>,<,>=,<=),以形成符合以下要求的全序:
  • 等同性
  • 完全性
  • 一致性
  • 传递性
2.每个结点n都要遵循下面这两个规则:
  • n的左子树的每个结点的元素小于等于结点n的元素。
  • n的右子树的每个结点的元素大于等于结点n的元素。
3.把数据存储在二叉查找树书中,而不是数组或者链表中的好处是什么?使用数组和链表十分缺乏效率:当我们需要查找某个元素出现的次数时,数组或者链表结构都需要检测每一个元素。
(5)堆:
  1. 是一棵完全二叉树。
  2. 每个结点的元素必须大于或者等于该结点的孩子结点元素。
  3. 用数组实现比用结点类(链表)实现简单,因为堆是一棵完全二叉树。可以实现一个有效的优先队列。
  4. 堆中插入元素:向上重排。
  5. 堆中删除元素:向下重排。

原创粉丝点击