三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

小学生能听懂的:二叉树、满二叉树、完全二叉树的区别 - 大厂扫地工

小学生能听懂的:二叉树、满二叉树、完全二叉树的区别 - 大厂扫地工

用小学生能听懂的话讲:二叉树、满二叉树、完全二叉树

先打个通俗比方

把树倒过来看,最上面 1 个是根,往下分叉,每个分叉点叫节点,最下面没分叉的叫叶子




一、什么是二叉树?


定义(人话版)

每一个节点,最多只能分 2 个叉左孩子、右孩子

可以不分叉、可以只分左边、可以只分右边、也可以左右都分。


规则

每个节点 0 个 / 1 个 / 2 个 孩子 都可以。


简单例子

plaintext


    A/B

A 只有左孩子 B,没有右孩子 → 这也是二叉树。

plaintext

    1
/
2 3

1 有左右两个孩子 → 也是二叉树。

只要不超过 2 个分叉,都是二叉树。



二、什么是满二叉树(完美满二叉树)


定义(人话版)

从最顶上到最底下,每一层都长满了每个节点都刚好有 2 个孩子,没有空缺、没有少分叉。

整棵树长得整整齐齐、满满当当


规则


  1. 每一个节点必须都有左右 2 个孩子
  2. 所有叶子都在同一最底层

例子

plaintext


       1
/
2 3
/ \ /
4 5 6 7

  • 1 有 2 个孩子
  • 2、3 也各有 2 个孩子
  • 最下面一层全部长满,没有空位置→ 这就是满二叉树
  • 只要有任何一个节点少了一个分叉,就不是满二叉树。


三、什么是完全二叉树


定义(人话版)

一层一层从左往右挨个排中间不能留空位置,只能最后一层最右边可以缺几个叶子。


规则


  1. 前面每一层全部长满
  2. 最后一层的节点靠左边排,右边可以空,不能中间空、左边空

✅ 是完全二叉树的例子

plaintext


       1
/
2 3
/
4 5

  • 第一层、第二层都长满了
  • 第三层只排了左边 4、5,右边空着,中间没留空位→ 是完全二叉树。

❌ 不是完全二叉树的反例

plaintext


       1
/
2 3

5

2 的左边空着,直接有右孩子 5,中间有空位 → 不是完全二叉树。


image.png

一句话总结区别


  1. 二叉树:每个点最多分 2 叉,随便长。
  2. 满二叉树:每一层全长满,每个点都刚好 2 个分叉,最整齐。
  3. 完全二叉树:按从左到右排队,前面几层长满,最后一层只能右边空、不能中间空。
  4. 我可以给你画简易卡通版树形结构图,适合直接拿去给小学生上课用,要不要我帮你画?

← 返回列表