老师又让我写作业了直接三种遍历完成提交
Posted @了凡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老师又让我写作业了直接三种遍历完成提交相关的知识,希望对你有一定的参考价值。
文章目录
数据结构
前言
博主介绍:
– 本人是一个不知名的二本院校计科专业大二学生,每天除了上课就是在学校里的一个小组学习,之前学习了JAVA后学了Python如今在专注于学习Golang语言,每天总是很多胡思乱想,想一些不着调的想法,想做很多很多的软件让很多朋友们使用,但如今的技术还不到家,希望可以做出很多很多的APP给大家一起用,现仍需继续努力!一起加油!
头文件
#include <cstdio>
#include <iostream>
结构体 类型定义
typedef struct BiTNode{
char data; // 结点数据域
struct BiTNode *LChild, *RChild; // 左右孩子指针
}BiTNode, *BiTree;
以先序遍历创建二叉树
void CreateBiTree(BiTree &T) {
char ch;
std::cin >> ch; //输入字符ch的值
if (ch == '#'){ //递归结束,建空树
T = NULL;
return;
}else{
T = new BiTNode;
T->data = ch; //生成根结点
CreateBiTree(T->LChild); // 递归创建左子树
CreateBiTree(T->RChild); // 递归创建右子树
}
}
先序遍历
void DLR(BiTree T){
if(T) {
std::cout << T->data; //访问根结点
DLR(T->LChild); //递归遍历左子树
DLR(T->RChild); //递归遍历右子树
}
}
中序遍历
void LDR(BiTree T){
if(T) {
LDR(T->LChild); //递归遍历左子树
std::cout << T->data; //访问根结点
LDR(T->RChild); //递归遍历右子树
}
}
后序遍历
void LRD(BiTree T){
if(T) {
LRD(T->LChild); //递归遍历左子树
LRD(T->RChild); //递归遍历右子树
std::cout << T->data; //访问根结点
}
}
主函数
int main(){
BiTree T;
CreateBiTree(T);
DLR(T);
LDR(T);
LRD(T);
return 0;
}
所有源码
#include <cstdio>
#include <iostream>
typedef struct BiTNode{
char data; // 结点数据域
struct BiTNode *LChild, *RChild; // 左右孩子指针
}BiTNode, *BiTree;
void DLR(BiTree T){
if(T) {
std::cout << T->data; //访问根结点
DLR(T->LChild); //递归遍历左子树
DLR(T->RChild); //递归遍历右子树
}
}
void LDR(BiTree T){
if(T) {
LDR(T->LChild); //递归遍历左子树
std::cout << T->data; //访问根结点
LDR(T->RChild); //递归遍历右子树
}
}
void LRD(BiTree T){
if(T) {
LRD(T->LChild); //递归遍历左子树
LRD(T->RChild); //递归遍历右子树
std::cout << T->data; //访问根结点
}
}
void CreateBiTree(BiTree &T) {
char ch;
std::cin >> ch; //输入字符ch的值
if (ch == '#'){ //递归结束,建空树
T = NULL;
return;
}else{
T = new BiTNode;
T->data = ch; //生成根结点
CreateBiTree(T->LChild); // 递归创建左子树
CreateBiTree(T->RChild); // 递归创建右子树
}
}
int main(){
BiTree T;
CreateBiTree(T);
LRD(T);
return 0;
}
以上是关于老师又让我写作业了直接三种遍历完成提交的主要内容,如果未能解决你的问题,请参考以下文章