【数据结构】使用先序递归过程构建并打印二叉树
创作时间:
作者:
@小白创作中心
【数据结构】使用先序递归过程构建并打印二叉树
引用
CSDN
1.
https://blog.csdn.net/yuzexuan666/article/details/138261711
二叉树是一种重要的数据结构,在计算机科学中有着广泛的应用。本文将介绍如何使用先序递归过程构建二叉树,并使用凹入法打印二叉树。
一、基础知识
1.1 什么是二叉树
二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树可以是空树,也可以由一个根节点加上两棵分别称为左子树和右子树的二叉树组成。
1.2 先序遍历
先序遍历是二叉树的一种遍历方式,其遍历顺序为:根节点 -> 左子树 -> 右子树。在先序遍历中,根节点总是第一个被访问。
二、题目要求
使用先序递归过程建立二叉树(存储结构:二叉链表),并用凹入法打印。输入数据按照先序遍历所得序列输入,当某节点左子树或右子树为空时,输入“ * ”号。如输入ABCDE** 得到的二叉树为:
三、实现效果
先序序列:ABCDE**
先序序列:ABCDEFGHIJK
四、代码实现
4.1 先序构建二叉树
BTNODE* CreateBiTree(void)
{
char ch;
scanf_s("%c", &ch);
if (ch == '*') // 如果读入的是 '*',表示该节点为空
return NULL;
BTNODE* T = (BTNODE*)malloc(sizeof(BTNODE));
T->data = ch; // 将读入的字符赋值给当前节点的数据域
T->lc = CreateBiTree(); // 递归创建左子树
T->rc = CreateBiTree(); // 递归创建右子树
return T;
}
这段代码实现了通过先序遍历序列构建二叉树的功能。首先读取一个字符,如果读入的是“*”,则表示该节点为空,返回NULL。否则,创建一个新的节点,将读入的字符赋值给该节点的数据域,然后递归地创建左子树和右子树。
4.2 凹入法打印二叉树
void PrintTabTab(BTNODE* T, int depth)
{
if (T)
{
for (int i = 0; i < depth; i++)
printf("__"); // 根据深度打印相应数量的缩进
printf("%c\n", T->data); // 打印当前节点的数据
PrintTabTab(T->lc, depth + 1); // 递归打印左子树,深度加1
PrintTabTab(T->rc, depth + 1); // 递归打印右子树,深度加1
}
}
这段代码实现了使用凹入法打印二叉树的功能。通过递归的方式,根据节点的深度打印相应数量的缩进,然后打印节点的数据。这样可以直观地展示二叉树的结构。
五、递归过程演示
以先序序列 ABCDE** 为例,演示递归构建二叉树的全过程:
- 读取字符 'A',创建根节点 A
- 递归创建左子树:
- 读取字符 'B',创建节点 B
- 递归创建 B 的左子树:
- 读取字符 'C',创建节点 C
- 读取字符 '*',表示 C 的左子树为空
- 读取字符 '*',表示 C 的右子树为空
- 读取字符 '*',表示 B 的右子树为空
- 递归创建 A 的右子树:
- 读取字符 'D',创建节点 D
- 读取字符 '*',表示 D 的左子树为空
- 读取字符 'E',创建节点 E
- 读取字符 '*',表示 E 的左子树为空
- 读取字符 '*',表示 E 的右子树为空
最终构建的二叉树结构如下:
本文介绍了如何使用先序递归过程构建二叉树,并使用凹入法打印二叉树。通过具体的代码示例和递归过程演示,帮助读者理解二叉树的构建和打印算法。
本文原文来自CSDN
热门推荐
丽江古城海拔高度是多少米?在2416米的高原上,邂逅千年时光!
在高温环境下,PI镀锡膜的锡层抗氧化技术如何改进?
银行储蓄存款利率调整的影响因素解析
《三国演义》南蛮孟获手下十大猛将
发烧3周还查不出原因?这份“发热待查”指南告诉你怎么办
PD-L1表达评分指标TPS、CPS、IPS、TC、IC傻傻分不清?一文汇总!
比特币价格走高风险上升!接下来走势如何——
追涨杀跌怎样避免风险?这种避免风险的方法是否有效?
特发性震颤怎么治疗,能治好吗?
司美格鲁肽: 糖尿病治疗的新选择
你家的微波炉还只用来热剩饭剩菜?亏大了!
如何从外文数据库上引用
工资标准是什么?从定义到实践的全面解析
纯钛牙冠和全瓷牙冠哪个耐用?寿命/材质及临床表现深度分析
财务投资人可以管理财务吗?理财公司老板跑路员工要抓吗?
老人饮食注意:四季饮食原则与健康搭配指南
东三省的三个省会城市,了解东北三省的省会及其特点
桑科植物:自然界的多彩瑰宝
核心网运行智能标准演进分析与展望
强化学习训练一两个小时,100%自主完成任务:机器人ChatGPT时刻真来了?
澳大利亚文化
普陀仙踪:浙江的佛教名山探秘
线束加工如何选线材?3大黄金法则让设备“血脉”更畅通
今年或创1980年以来结婚数最低,社会学家戴慧思分析中国年轻人为何不结婚
发现同事在背后说自己坏话,该如何应对才能既维护自己又不恶化关系
芍药花的花语是什么?芍药花的寓意和象征意义有哪些?
项目亏损项目经理怎么办
用这些方法实现工作与生活的平衡
波伏瓦的三重奏:自我与他者的博弈
12329住房公积金热线是什么