前言

数(据结构)算(法)再回顾,加深记忆抗遗忘。

基本性质

  1. 非空二叉树的叶子节点数,等于度为 2 的节点数加 1;
  2. 第 k 层至多有 2^(k − 1) 个节点(每层节点数可构成公比为 2 的等比数列);
  3. 高度为 h,至多有 2^ℎ − 1
  4. n 个节点的二叉链表,有 n+1 个空链域(左或右孩子指针为 NULL);

[注]:节点的度就是节点的子节点个数,或称分支个数,考研爱考,算法题没见过。

满、完全二叉树性质

前提:根节点为 1,逐层从左到右编号,当前节点为 i;

(一)父子节点间的关系:

  • 父节点:⌊i / 2⌋
  • 左子:2 * i
  • 右子:2 * i + 1

(二)若i ≤ ⌊n / 2⌋,则节点 i 为分支节点,否则为叶子节点。

(三)对于完全二叉树,从 1 往后遍历,若找到第一个没有右孩子的节点 i,则大于 i 的节点都是叶子节点。

[注]:数学符号⌊ x ⌋意思是向下取整;

二叉树的顺序存储

满、完全二叉树按照从根到叶,从左到右的顺序,依次存入一维数组(从数组下标 1 开始存,舍弃 0,则直接照搬前述父子编号关系式即可)。

其他二叉树添加空节点,构造成完全二叉树,再按上述顺序存入一维数组。