#include <iostream>
#include <cstdio>
using namespace std;
typedef struct BitNode
{
int data;
struct BitNode *lchild,*rchild;
}BitNode,*BitTree;
void CreatBinTree(BitTree &T)
{
char ch;
scanf("%c",ch);
if(ch==' ') T=NULL;
else
{
T=(struct *BitNode) malloc(sizeof(struct BitNode));
T->data=ch;
CreatBinTree(T->lchild);
CreatBinTree(T->rchild);
}
}
int CountLeaf(BitTree T,int &count)
{
if(T)
{
if((!T->lchild)&&(!T->rchild))
{
count++;
}
CountLeaf(T->lchild,count);
CountLeaf(T->rchild,count);
}
}
void CountLeaf(BitTree T)
{
int m;
int n;
if(!T) return 0;
if(!T->lchild&&!T->rchild) return 1;
else
{
m=CountLeaf(T->lchild);
n=CountLeaf(T->rchild);
return (m+n);
}
}
void Firstorder(BitTree T,*Visit(int))
{
if(T)
{
Visit(T->data);
Inorder(T->lchild,Visit);
Inorder(T->rchild,Visit);
}
}
void Inorder(BitTree T,*Visit(int))
{
if(T)
{
Inorder(T->lchild,Visit);
Visit(T->data);
Inorder(T->rchild,Visit);
}
}
void Endorder(BitTree T,*Visit(int))
{
if(T)
{
Inorder(T->lchild,Visit);
Inorder(T->rchild,Visit);
Visit(T->data);
}
}
int Depth(BitTree T)
{
int depthleft,depthright,depthval;
if(!T) depthval=0;
else
{
depthleft=Depth(T->lchild);
Depthright=Depth(T->rchild);
depthval=1+(depthleft>depthright?depthleft:depthright);
}
}
void Depth(BitTree T,int level,int &devel)
{
if(T)
{
if(level>dval) dval=level;
Depth(T->lchild,level+1,dval);
Depth(T->rchild,level+1,dval);
}
}
BitTree *CopyTree(BitNode *T)
{
if(!T) return NULL;
if(T->lchild)
{
newIptree=CopyTree(T->lchild);
}
else
{
newIptree=NULL;
}
if(T->rchild)
{
newIptr=CopyTree(T->rchild);
}
}
int main()
{
return 0;
}
二叉树的实践应用
最新推荐文章于 2022-01-16 13:24:29 发布