#include
#include
using namespace std;
//二叉树的struct定义
typedef struct node {
struct node* lchild;
struct node* rchild;
char data;
}BitreeNode,*Bitree;
//创建二叉树
void CreateBitree(Bitree& T) {
char c;
cin >> c;
if (’#’ == c) {
T == NULL;
}
else {
T = new BitreeNode;
T->data = c;
CreateBitree(T->lchild);
CreateBitree(T->rchild);
}
}
//树的先序遍历
void Preodertraverse(Bitree T) {
if (T) {
cout << T->data;
Preodertraverse(T->lchild);
Preodertraverse(T->rchild);
}
}
//树的中序遍历
void Inodertraverse(Bitree T) {
if (T) {
Inodertraverse(T->lchild);
cout << T->data;
Inodertraverse(T->rchild);
}
}
//树的后序遍历
void Postodertraverse(Bitree T) {
if (T) {
Postodertraverse(T->lchild);
Postodertraverse(T->rchild);
cout << T->data;
}
}
//求树的深度
int Depth(Bitree T) {
int m, n;
if (T == NULL) {
return 0;
}
else {
m = Depth(T->lchild);
n = Depth(T->rchild);
if (m > n) { return (m + 1); }
else { return (n + 1); }
}
}
//计算结点个数
int Nodecount(Bitree T) {
if (T == NULL) { return 0; }
else { return Nodecount(T->lchild) + Nodecount(T->rchild) + 1; }
}
C++二叉树的创建,树的深度以及遍历的递归
最新推荐文章于 2024-08-16 20:34:10 发布