博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树递归遍历
阅读量:6861 次
发布时间:2019-06-26

本文共 2425 字,大约阅读时间需要 8 分钟。

二叉树模型

  编写简单的程序对下图二叉树进行遍历

实现方式

二叉树结点

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
4 #include
5 #include
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 }

 

转载于:https://www.cnblogs.com/lixuejian/p/10883601.html

你可能感兴趣的文章
Springboot的热部署
查看>>
Thinking in UML-1-为什么需要UML
查看>>
vs编译obj给delphi用
查看>>
过游戏保护NP或TP的几种方法和思路
查看>>
equals和hashcode为什么要一起重写
查看>>
模态与非模态对话框的问题
查看>>
httpclient 备注 控制连接时间及多线程错误
查看>>
地对地导弹地对地导弹地对地导弹
查看>>
浏览器根对象window之performance
查看>>
让div 充满整个body
查看>>
常用排序算法
查看>>
程序员保持快乐活跃的6个好习惯(转)
查看>>
找工作的一些感悟——前端小菜的成长
查看>>
jSON Call can throw but it is not marked with try
查看>>
基于bootstrap的jQuery多级列表树插件 treeview
查看>>
node06
查看>>
笔试题[转]
查看>>
图片轮换
查看>>
PHP数据结构练习笔记--栈
查看>>
JSON对象配合jquery.tmpl.min.js插件,手动攒出一个table
查看>>