总结8..

#include <stdio.h>

// 定义结构体表示二叉树节点,包含左右子节点编号

struct node {

int l;

int r;

} tree100000;

// 全局变量记录二叉树最大深度,初始为0

int ans = 0;

// 深度优先搜索函数

// pos: 当前节点在数组中的位置,deep: 当前深度

void dfs(int pos, int deep) {

// 若为叶子节点

if (treepos.l == 0 && treepos.r == 0) {

if (deep > ans) ans = deep; // 更新最大深度

return;

}

dfs(treepos.l, deep + 1); // 递归搜索左子树

dfs(treepos.r, deep + 1); // 递归搜索右子树

}

int main() {

int n;

scanf("%d", &n); // 输入节点数

// 输入每个节点的左右子节点编号

for (int i = 1; i <= n; i++) {

scanf("%d %d", &treei.l, &treei.r);

}

dfs(1, 1); // 从根节点开始搜索,初始深度为1

printf("%d\n", ans); // 输出最大深度

return 0;

}

#include <stdio.h>

// 定义结构体 node 表示二叉树的节点,每个节点包含左子节点 l 和右子节点 r

struct node {

char l;

char r;

} tree200;

// 深度优先搜索函数,用于实现二叉树的先序遍历(根 - 左 - 右)

// pos: 当前正在处理的节点值

void dfs(char pos) {

// 输出当前节点的值,实现先序遍历中先访问根节点的操作

printf("%c", pos);

// 如果当前节点的左子节点不是 '*'(这里 '*' 表示空节点),则递归遍历左子树

if (treepos.l!= '*') {

dfs(treepos.l);

}

// 如果当前节点的右子节点不是 '*'(这里 '*' 表示空节点),则递归遍历右子树

if (treepos.r!= '*') {

dfs(treepos.r);

}

}

int main() {

int n;

char a, b;

// 读取二叉树的节点个数

scanf("%d", &n);

// 循环读取每个节点的信息

for (int i = 1; i <= n; i++) {

// 读取当前节点的值

scanf(" %c", &a);

// 记录第一个节点的值,作为二叉树的根节点

if (i == 1) {

b = a;

}

// 读取当前节点的左子节点和右子节点的值

scanf("%c%c", &treea.l, &treea.r);

}

// 从根节点开始进行深度优先搜索(先序遍历)

dfs(b);

return 0;

}

相关推荐
iotxiaohu2 小时前
用 cflow 查看 C 函数调用关系
c语言·开发语言·cflow
iCxhust5 小时前
51单片机电力载波应用开发(九)51产品化
c语言·数据库·嵌入式硬件·mysql·51单片机·软件工程·c51
Logic1015 小时前
C语言/数据结构字符串题解:统计“chhc“子串权值总和——一次遍历模式匹配
c语言·数据结构·算法·字符串·时间复杂度·空间复杂度·ascii
m0_547486667 小时前
《数据结构 (C语言)》期末试卷及答案(10套)2026版
c语言·开发语言·数据结构
八月的雨季 最後的冰吻7 小时前
FFmepg-- 42-ffplay.c 线程安全机制深度分析
c语言·安全·ffmpeg
逐光者9337 小时前
滤波器的 R 与 C 如何选择:从截止频率到工程实践
c语言·开发语言·r语言
水饺编程8 小时前
第2章:Linux 基础,whoami 命令
linux·c语言·汇编
Logic10110 小时前
C语言/数据结构动态规划题解:字符串变回文的最少操作次数——最长回文子序列(LPS)
c语言·数据结构·算法·动态规划·时间复杂度·回文串·最长回文子序列
wuminyu10 小时前
ZGC染色指针在虚拟线程stackChunkOop上的并发屏障全景分析
java·linux·c语言·jvm·c++
Logic10110 小时前
C语言/数据结构组合数学题解:数字好排列计数——质数倍数分类与阶乘取模
c语言·数据结构·算法·组合数学·时间复杂度·排列·取模运算