二叉树递归遍历
二叉树模型
编写简单的程序对下图二叉树进行遍历
实现方式
二叉树结点
typedef struct BINARYNODE{ char ch; struct BINARYNODE* lchild; struct BINARYNODE* rchild; }BinaryNode;
遍历方式
先序遍历
//先访问根节点 printf("%c", root->ch); //再遍历左子树 Recursion(root->lchild); //再遍历右子数 Recursion(root->rchild);
中序遍历
//再遍历左子树 Recursion(root->lchild); //先访问根节点 printf("%c", root->ch); //再遍历右子数 Recursion(root->rchild);
后序遍历
//再遍历左子树 Recursion(root->lchild); //再遍历右子数 Recursion(root->rchild); //先访问根节点 printf("%c", root->ch);
递归遍历
Recursion(&node1);
创建结点
//创建结点 BinaryNode node1 = { 'A',NULL,NULL }; BinaryNode node2 = { 'B',NULL,NULL }; BinaryNode node3 = { 'C',NULL,NULL }; BinaryNode node4 = { 'D',NULL,NULL }; BinaryNode node5 = { 'E',NULL,NULL }; BinaryNode node6 = { 'F',NULL,NULL }; BinaryNode node7 = { 'G',NULL,NULL }; BinaryNode node8 = { 'H',NULL,NULL };
建立结点关系
//建立结点关系 node1.lchild = &node2; node1.rchild = &node6; node2.rchild = &node3; node3.lchild = &node4; node3.rchild = &node5; node6.rchild = &node7; node7.lchild = &node8;
运行结果
先序遍历
中序遍历
后序遍历
源码
main.c
1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdlib.h> 4 #include<stdio.h> 5 #include<string.h> 6 7 //二叉树结点 8 typedef struct BINARYNODE{ 9 char ch; 10 struct BINARYNODE* lchild; 11 struct BINARYNODE* rchild; 12 }BinaryNode; 13 14 //递归函数 15 void Recursion(BinaryNode* root) 16 { 17 if (root == NULL) 18 return; 19 //先访问根节点 20 printf("%c", root->ch); 21 //再遍历左子树 22 Recursion(root->lchild); 23 //再遍历右子数 24 Recursion(root->rchild); 25 } 26 27 //创建二叉树结点 28 void CreateBinaryTree() 29 { 30 //创建结点 31 BinaryNode node1 = { 'A',NULL,NULL }; 32 BinaryNode node2 = { 'B',NULL,NULL }; 33 BinaryNode node3 = { 'C',NULL,NULL }; 34 BinaryNode node4 = { 'D',NULL,NULL }; 35 BinaryNode node5 = { 'E',NULL,NULL }; 36 BinaryNode node6 = { 'F',NULL,NULL }; 37 BinaryNode node7 = { 'G',NULL,NULL }; 38 BinaryNode node8 = { 'H',NULL,NULL }; 39 40 //建立结点关系 41 node1.lchild = &node2; 42 node1.rchild = &node6; 43 node2.rchild = &node3; 44 node3.lchild = &node4; 45 node3.rchild = &node5; 46 node6.rchild = &node7; 47 node7.lchild = &node8; 48 49 //递归遍历 50 Recursion(&node1); 51 printf("\n"); 52 } 53 54 int main() 55 { 56 CreateBinaryTree(); 57 return 0; 58 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异