📄 二叉树的遍历.cpp
字号:
#include <stdio.h>
#include <malloc.h>
#include <math.h>
#include <iostream.h>
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
int count = 0;
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree &T)
{
//创建一颗二叉树
char ch;
scanf("%c",&ch);
if(ch==' ')T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) return 0;
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 1;
}
void Preorder(BiTree &T)
{
//先序遍历二叉树递归排列算法
if(T){
printf("%c",T->data);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
void Inorder(BiTree &T)
{
//中序遍历二叉树递归排列算法
if(T)
{
Inorder(T->lchild);
printf("%c",T->data);
Inorder(T->rchild);
}
}
void Postorder(BiTree &T)
{
//后序遍历二叉树递归排列算法
if(T)
{
Postorder(T->lchild);
Postorder(T->rchild);
printf("%c",T->data);
}
}
void CountLeaf (BiTree T){
//对叶子结点计数
if (T){
if ((!T->lchild)&&(!T->rchild))
count++;
CountLeaf( T->lchild);
CountLeaf( T->rchild);
}
}
void main(){
BiTree p;
CreateBiTree(p);
printf("二叉树创建完毕\n");
printf("先序遍历二叉树递归排列结果为:\n");
Preorder(p);
printf("\n");
printf("中序遍历二叉树递归排列结果为:\n");
Inorder(p);
printf("\n");
printf("后序遍历二叉树递归排列结果为:\n");
Postorder(p);
printf("\n");
CountLeaf(p);
printf("\n");
printf("二叉树中叶子结点的个数为:");
printf("%d",count);
printf("\n\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -