🐵指尖猴全新升级
第1课:树的概念
🌳

树的概念

从一条链到一棵树,数据开始分叉生长!

📖知识引入

🌳树是什么
由节点和边组成的层次结构,像一棵倒着生长的树,根在上、叶在下
👨‍👧父与子
直接相连的上下级节点,一个父亲可以有多个孩子,一个孩子只有一个父亲
🍃叶子节点
没有孩子的节点,长在树的末梢,是这条分支的终点
📏深度与高度
从根走到某节点经过的边数叫深度,根的深度为0,往下逐层加一
💡
树是n个节点的有限集合,有且仅有一个根,并且绝不能出现环——一旦连成环它就不再是树了

🔍用fa数组存一棵树

#include <iostream>
using namespace std;

int fa[105];  // fa[x] 存 x 的父节点编号

int main() {
    int n = 6;  // 6 个节点,1 号是根
    fa[1] = 0;              // 根节点没有父亲
    fa[2] = 1; fa[3] = 1;   // 1 号的孩子是 2、3
    fa[4] = 2; fa[5] = 2; fa[6] = 3;

    // 沿 fa 一路向上,求 6 号节点的深度
    int x = 6, depth = 0;
    while (fa[x] != 0) { x = fa[x]; depth++; }
    cout << "深度=" << depth << endl;  // 输出 2
    return 0;
}

fa[x]存x的父节点,沿fa一路向上就能求出任何节点的深度。

🎯小测验

第1题:树中可以出现环吗?

第2题:一棵树有几个根节点?

第3题:叶子节点的特点是什么?

📝本课知识点

  • ✓树=节点+边,无环且连通
  • ✓有且仅有一个根节点
  • ✓没有孩子的节点叫叶子
第1课完成!继续探索下一课吧 🚀

下一课

第2课

🌳