数据结构 | 二叉树的创建和三种遍历方式
二叉树的创建和三种遍历方式
帮同学写作业顺带复习了一下
直接丢代码了:
#include <stdio.h>
#include <stdlib.h>
// 二叉树节点结构体&指针类型
typedef struct BiTNode
{
char data; // 数据域
struct BiTNode* lchild; // 左孩子
struct BiTNode* rchild; // 右孩子
}BiTNode, *BiTree;
void CreateBiTree(BiTree &T){
// 前序遍历创建二叉树
char data;
scanf("%c", &data);
if (data != '#'){ // 遇到#表示当前树结束
T = new BiTNode; // 生成根节点
T->data = data; // 给数据域赋值
CreateBiTree(T->lchild); // 递归创建左子树
CreateBiTree(T->rchild); // 递归创建右子树
}else{
T = NULL; // 空树
}
}
// 前序遍历
void PreOrderTraverse(BiTree T){
if(T){
printf("%c ", T->data); // 访问根节点
PreOrderTraverse(T->lchild); // 递归前序遍历左子树
PreOrderTraverse(T->rchild); // 递归前序遍历右子树
}
}
// 中序遍历
void InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild); // 递归中序遍历左子树
printf("%c ", T->data); // 访问根节点
InOrderTraverse(T->rchild); // 递归中序遍历右子树
}
}
// 后序遍历
void PostOrderTraverse(BiTree T){
if(T){
PostOrderTraverse(T->lchild); // 递归后序遍历左子树
PostOrderTraverse(T->rchild); // 递归后序遍历右子树
printf("%c ", T->data); // 访问根节点
}
}
int main(){
BiTree bt = NULL;
CreateBiTree(bt);
printf("\n前序遍历:");
PreOrderTraverse(bt);
printf("\n中序遍历:");
InOrderTraverse(bt);
printf("\n后序遍历:");
PostOrderTraverse(bt);
return 0;
}
over.
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/15408396.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com