二叉树建立及其先序遍历(C语言)
题目描述:
Description
按先序遍历顺序输入二叉树的各个结点值,采用二叉链表的存储结构存储该二叉树,并按先序遍历输出二叉树的各结点的值及深度。
Input
按先序遍历顺序输入二叉树的各个结点值,#表示空节点。
Output
该二叉树的先序遍历序列,在每个节点后输出它在树中的深度。
Sample Input
ABD##E##C##
Sample Output
A(1)B(2)D(3)E(3)C(2)
C语言解法:
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode {
char Data;
int deepth;
struct BiTNode *LChild;
struct BiTNode *RChild;
} BiTNode, *BiTree;
void CreateBiTree(BiTree &T, int count) {
char ch;
scanf("%c", &ch);
if(ch == '#') T = NULL;
else {
T = (BiTNode *)malloc(sizeof(BiTNode));
T->Data = ch;
T->deepth = ++count;
CreateBiTree(T->LChild, T->deepth);
CreateBiTree(T->RChild, T->deepth);
}
}
void Visit(BiTree &T) {
if(T != NULL)
printf("%c(%d)", T->Data, T->deepth);
else return;
Visit(T->LChild);
Visit(T->RChild);
}
int main() {
BiTree T;
CreateBiTree(T,0);
Visit(T);
return 0;
}
#include <stdlib.h>
typedef struct BiTNode {
char Data;
int deepth;
struct BiTNode *LChild;
struct BiTNode *RChild;
} BiTNode, *BiTree;
void CreateBiTree(BiTree &T, int count) {
char ch;
scanf("%c", &ch);
if(ch == '#') T = NULL;
else {
T = (BiTNode *)malloc(sizeof(BiTNode));
T->Data = ch;
T->deepth = ++count;
CreateBiTree(T->LChild, T->deepth);
CreateBiTree(T->RChild, T->deepth);
}
}
void Visit(BiTree &T) {
if(T != NULL)
printf("%c(%d)", T->Data, T->deepth);
else return;
Visit(T->LChild);
Visit(T->RChild);
}
int main() {
BiTree T;
CreateBiTree(T,0);
Visit(T);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义