目录

1.二叉树的结构:

2.二叉树的前序遍历:

3.二叉树的中序遍历:

4.二叉树的后序遍历:

5.二叉树前、中、后序的代码实现:

前序遍历函数:

中序遍历函数:

后序遍历:

完整代码:

代码运行结果截图:


1.二叉树的结构:

每一个二叉树均可以分为三部分:1.根节点 2.左子树 3.右子树。

比如上图中的A的左右子树分别是B、C,而E的左右子树为NULL、NULL。通常我们把NULL省略。

2.二叉树的前序遍历:

又叫先根遍历,遍历顺序是根节点、左子树、右子树。

上图的前序遍历:A B D NULL NULL E NULL NULL C NULL NULL

省略NULL后:A B D E C

3.二叉树的中序遍历:

遍历顺序:左子树、根节点、右子树

上图的中序遍历:NULL D NULL B NULL E NULL A NULL C NULL

省略NULL后:D B E A C

4.二叉树的后序遍历:

遍历顺序:左子树、右子树、根节点

上图的中序遍历:NULL NULL D NULL NULL E B NULL NULL C A

省略NULL后:D E B C A

5.二叉树前、中、后序的代码实现:

前序遍历函数:

void prev_order(BTNode* root)//前序遍历
{if (root == NULL){printf("NULL");return;}printf("%c ", root->data);prev_order(root->left);prev_order(root->right);
}

中序遍历函数:

void on_order(BTNode* root)//中序遍历
{if (root == NULL){printf("NULL\n");return;}prev_order(root->left);printf("%c ", root->data);prev_order(root->right);
}

后序遍历:

void post_order(BTNode* root)//后序遍历
{if (root == NULL){printf("  NULL   \n");return;}prev_order(root->left);prev_order(root->right);printf("%c    ", root->data);
}

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef char BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;
BTNode* BuyNode(BTDataType x)//开辟空间存储变量
{BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));newnode->data = x;newnode->left = NULL;newnode->right = NULL;return newnode;
}
void prev_order(BTNode* root)//前序遍历
{if (root == NULL){printf("NULL");return;}printf("%c ", root->data);prev_order(root->left);prev_order(root->right);
}
void on_order(BTNode* root)//中序遍历
{if (root == NULL){printf("NULL\n");return;}prev_order(root->left);printf("%c ", root->data);prev_order(root->right);
}
void post_order(BTNode* root)//后序遍历
{if (root == NULL){printf("  NULL   \n");return;}prev_order(root->left);prev_order(root->right);printf("%c    ", root->data);
}
int main(void)
{BTNode* n1 = BuyNode('A');BTNode* n2 = BuyNode('B');BTNode* n3 = BuyNode('C');BTNode* n4 = BuyNode('D');BTNode* n5 = BuyNode('E');n1->left = n2;n1->right = n3;n2->left = n4;n2->right = n5;prev_order(n1);printf("\n");on_order(n1);printf("\n");post_order(n1);printf("\n");return 0;
}

代码运行结果截图:

二叉树的三种遍历方式相关推荐

  1. c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理

    二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个名字?是根据根节点的顺序命名的. 比如上图正常的一个满节点,A:根节点.B:左节点.C:右节点,前序顺序是ABC(根节点排最先,然后 ...

  2. 二叉树的三种遍历方式(递归、非递归和Morris遍历)

    二叉树的三种遍历方式(递归.非递归和Morris遍历) 原文:http://www.linuxidc.com/Linux/2015-08/122480.htm 二叉树遍历是二叉树的最基本的操作,其实现 ...

  3. 详解二叉树的三种遍历方式(递归、迭代、Morris算法)

    详解二叉树的三种遍历方式(递归.迭代.Morris算法) 最重要的事情写在前面:遍历顺序不一定就是操作顺序!!! 递归解法 首先,一颗二叉树它的递归序列是一定的,导致其前中后序不同的原因只不过是访问节 ...

  4. 二叉树的三种遍历方式:前序遍历、中序遍历和后序遍历

    二叉树的三种遍历方式:前序遍历.中序遍历和后序遍历 参考资料: 二叉树.前序遍历.中序遍历.后序遍历 - 蓝海人 - 博客园 (cnblogs.com) 二叉树 - LeetBook - 力扣(Lee ...

  5. c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理

    C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...

  6. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)

    树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...

  7. 二叉树的三种遍历方式:先序,中序,后序

    二叉树遍历基础概念分析: 遍历:编写程序时,读取二叉树中内容的顺序(本人理解为此). 先序/中序/后序:二叉树的先序,中序,后序中的"先中后"是相对于"根"而言 ...

  8. 二叉树的三种遍历方式-前序遍历,中序遍历,后序遍历

    二叉树的遍历 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问.访问结点所做的操作依赖于具体的应用问题(比如:打印节点内容.节点内容加1). 遍历是二叉树上 ...

  9. 天勤数据结构:树与二叉树(图解二叉树的三种遍历方式执行流程,超详细)

    数据结构(第六章) 树与二叉树 1. 树与二叉树的相互转换 2. 森林与二叉树的相互转换 3. 二叉树的遍历 3.1 层序遍历(广度优先遍历) 2. 深度优先遍历 3. 树转化为二叉树的遍历 将一颗 ...

最新文章

  1. SAP 电商云 Spartacus SSR Optimization Engine 几处 timeout 的执行顺序
  2. 力扣498. 对角线遍历
  3. python实验练习-图书管理系统(使用文件来实现)
  4. Hadoop之HDFS应用
  5. JavaScript 中的函数介绍
  6. php实现一个简单的购物网站
  7. python的sort()和sorted()的区别_Python 3中sort()和sorted()的区别和用法,Python3
  8. System.out和System.err的区别
  9. spring事件监听器系列一:应用
  10. Ubuntu 安装 gcc-4.9.3-64-gnu
  11. 通信-RS232、RS485、RS422
  12. 20220522Python3.10安装教程
  13. java 汉字转拼音_java汉字转拼音
  14. 发现一款好用的 java web报表工具
  15. 祛痘收缩毛孔的简单方法 - 健康程序员,至尚生活!
  16. 信用社考试计算机试题及答案,2016黑龙江省农村信用社考试题库-计算机试题及答案六...
  17. npm install 报错up to date, audited 1 package in 133msfound 0 vulnerabilities
  18. 基于铂电阻测温电路的设计
  19. Vue全家桶系列之Vuex(二)
  20. 成功就是日复一日那一点点小小努力的积累

热门文章

  1. [学习]19 如何高效工作和学习
  2. Win8 HTML5与JS编程学习笔记(一)
  3. w2008服务器备份文件夹,windows server 2008中的BACKUP恢复模式怎么恢复文件或文件夹...
  4. 某腾LOL开发负责人教你如何用Java实现一把 LOL 案例,学会模板设计模式!
  5. 解决linux重新启动时有线网络连接不上
  6. 即时通讯音视频开发(十):实时语音通讯的回音消除技术详解
  7. 2012 爱情体验之一
  8. 网络安全漏洞扫描的工作原理
  9. 华米用新旗舰手表传递强信号:专业主义和长期主义的胜利
  10. Notification温馨小提示