#include<stdio.h>
#include<stdlib.h>
typedef struct BiNode{
int data;
struct BiNode *lchild, *rchild;
}BiNode, *BiTree;
// 初始化
void InitBiNode(BiNode *T){
T->lchild=NULL;
T->rchild=NULL;
};
// 求树高
int Height(BiTree T){
if(!T)
return 0;
// front队头,rear队尾,last当前层最右结点,level层数
int front=-1, rear=0, last=0, level=0;
BiTree Q[10];
BiTree p;
Q[rear]=T;
while(front<rear){
p=Q[++front];
// printf("当前指向%d",p->data);
if(p->lchild)
Q[++rear]=p->lchild;
if(p->rchild)
Q[++rear]=p->rchild;
if(front==last){
level++;
// printf(" 当前层高为%d\n",level);
last=rear;
}
}
return level;
};
int main(){
// 造个树
BiNode *p,*q,*r,*s;
p=(BiNode *)malloc(sizeof(BiNode));
q=(BiNode *)malloc(sizeof(BiNode));
r=(BiNode *)malloc(sizeof(BiNode));
s=(BiNode *)malloc(sizeof(BiNode));
InitBiNode(p);
InitBiNode(q);
InitBiNode(r);
InitBiNode(s);
p->lchild=q;
q->data=2;
p->rchild=r;
r->data=3;
r->rchild=s;
s->data=4;
// 运行函数
printf("总层高为%d",Height(p));
return 0;
}
【数据结构】二叉树队列求树高 自用
最新推荐文章于 2022-08-14 16:21:30 发布