原题链接:数据结构-二叉链表存储的二叉树
//二叉树的前序、中序递归遍历与先序生成
#include <bits/stdc++.h>
using namespace std;
typedef struct TNode *PtrToTNode;
typedef PtrToTNode BinTree;
typedef char ElementType;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
//二叉树的先序递归遍历
void PreorderTraversal(BinTree BT){
if(BT){
printf("%c ",BT->Data);
PreorderTraversal(BT->Left);
PreorderTraversal(BT->Right);
}
}
//二叉树的中序递归遍历
void InOrderTraversal(BinTree BT){
if(BT){
InOrderTraversal(BT->Left);
printf("%c ",BT->Data);
InOrderTraversal(BT->Right);
}
}
BinTree CreateBinTreeNode(ElementType X){
BinTree node = (BinTree)malloc(sizeof(struct TNode));
node->Data = X;
node->Left = NULL;
node->Right = NULL;
return node;
}
BinTree PreCreateBinTree(){
ElementType X;
scanf("%c",&X);
if(X==' '){
return NULL;
}
else{
BinTree BT = CreateBinTreeNode(X);
BT->Left = PreCreateBinTree();
BT->Right = PreCreateBinTree();
return BT;
}
}
//释放二叉树所有结点内存
void FreeBinTree(BinTree BT){
if(BT){
BinTree BTL=BT->Left,BTR=BT->Right;
free(BT);
BT = NULL;
FreeBinTree(BTL);
FreeBinTree(BTR);
}
}
int main(){
BinTree BT = PreCreateBinTree();
PreorderTraversal(BT);
cout << endl;
InOrderTraversal(BT);
cout << endl;
InOrderTraversal(BT);
FreeBinTree(BT);
return 0;
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复