XingHuiSama の 宝藏之地
首页项目归档照片墙杂谈友链关于
封面

数据结构——树变化为二叉树

写作时间:2026-04-10 11:19:30
# 数据结构
# 工作

普通树就像个大家族,一个老父亲可以生七八个儿子。但计算机嫌这种结构太乱了(有的节点有 1 个子树,有的有 5 个,不好写代码)。为了方便管理,计算机强行规定了一种“二叉树传位法”:

  • 规则一(左边连的必须是长子):老父亲从此以后只认自己的大儿子(大儿子变成左孩子),其他的二儿子、三儿子他都不管了,统统断绝父子关系!
  • 规则二(右边连的必须是亲兄弟):那些被老父亲抛弃的弟弟们怎么办?靠大哥来养!大哥的右手拉着二弟,二弟的右手拉着三弟(亲兄弟变成右孩子)。

这就是“左孩子,右兄弟”**!只要按照这个规矩走,再复杂的家族也能变成单线汇报的二叉树。

🌰 举个通俗易懂的例子

假设我们有一棵最简单的“普通树”,家族架构如下:

  • 爷爷 A 有三个儿子:老大 B、老二 C、老三 D。
  • 老大 B 有两个儿子:孙子 E、孙子 F。
  • 老二 C 和老三 D 还没有孩子。

普通树画出来是这样的:

A (爷爷)
   /  |  \
  B   C   D  (三个儿子)
 / \
E   F        (老大B的两个儿子)

现在,我们用“单线传位规矩(左孩子,右兄弟)”给它做手术:

第一步:兄弟们手拉手(连兄弟) 把所有的亲兄弟用一根横线连起来:B 连着 C,C 连着 D;E 连着 F。

第二步:老父亲六亲不认,只留长子(断父子) 爷爷 A 只保留连着长子 B 的线,把连着 C 和 D 的线统统剪断! 老大 B 只保留连着长子 E 的线,把连着 F 的线剪断!

第三步:整理队形,向右倾斜 45 度! 现在我们来看看每个人的“左孩子(长子)”和“右孩子(亲兄弟)”分别是谁,这棵二叉树就画出来了:

  • 看 A: A 的长子是 B(A 的左孩子是 B),A 自己没有兄弟(A 的右边为空)。
  • 看 B: B 的长子是 E(B 的左孩子是 E),B 的亲弟弟是 C(B 的右孩子是 C)。
  • 看 C: C 没有孩子(C 的左边为空),C 的亲弟弟是 D(C 的右孩子是 D)。
  • 看 D: D 没有孩子,也没有亲弟弟(D 的左右都为空)。
  • 看 E: E 没有孩子(E 的左边为空),E 的亲弟弟是 F(E 的右孩子是 F)。

画成纯正的二叉树就是这样:

    A
   /
  B
 / \
E   C
 \   \
  F   D

核心总结

你看转化后的二叉树:

  • 任何一个节点,它往左走,遇到的一定是它原来的亲生大儿子。
  • 任何一个节点,它往右走,遇到的一定是它原来的亲生二弟、三弟。
avatar

XingHuiSama

在代码、学术与分子动力学模拟间穿梭的普通人。近期正埋头于 GROMACS 模拟研究与神经网络计算。

RECOMMENDED

GROMACS 2025 分子动力学模拟初探2222

2026-03-24 07:00:45

Computational Chemistry Tool 工具二介绍

2026-04-01 07:00:23

Leetcode一百题——字母异位词分组

2026-04-07 15:34:18

Table of Contents