int Btdepth(BiTree){
If(!T){
return 0;
}
int front = -1 , rear = -1;
int last=1 , level=0;
BiTree Q[Maxsize];
Q[++rear]=T;
BiTree p;
While(front<rear)
{
p=Q[++front];
If(p->lchild){
Q[++rear]=p->lchild;
}
If(p->rchild) {
Q[++rear]=p->rchild;
}
If(front == last){
level++;
last=rear;
}
}
return level;
}
// 定义一个函数Btdepth,参数为指向BiTree(二叉树节点)类型的指针,返回值类型为整型。
int Btdepth(BiTree T) {
// 当输入的二叉树节点为空时(!T表示T为NULL),返回0,意味着树的深度为0。
if (!T) {
return 0;
}
// 初始化两个变量作为队列的前端和后端索引,以及初始化最后访问节点的位置last和当前层次level。
int front = -1, rear = -1;
int last = 1, level = 0;
// 创建一个大小为Maxsize的数组来模拟队列,用于存储待遍历的二叉树节点。
BiTree Q[Maxsize];
// 将根节点放入队列中。
Q[++rear] = T;
// 定义一个临时节点指针p,用于遍历队列中的节点。
BiTree p;
// 当队列的前端小于后端时,表示队列中有节点等待处理。
while (front < rear) {
// 取出队列前端的节点进行处理,并将队列前沿向前移动。
p = Q[++front];
// 检查当前节点的左子节点,如有,则将其加入到队列的后端。
if (p->lchild) {
Q[++rear] = p->lchild;
}
// 检查当前节点的右子节点,如有,同样将其加入到队列的后端。
if (p->rchild) {
Q[++rear] = p->rchild;
}
// 当处理完一层的所有节点时(即front等于上次处理层的最后一个节点的位置last),层次增加,并更新last。
if (front == last) {
level++;
last = rear;
}
}
// 遍历结束后返回最大层次,即二叉树的深度。
return level;
}
用C语言编写的,用于计算二叉树的最大深度。
这个代码片段是基于特定的二叉树结构实现的(假设每个节点有两个指针分别指向其左孩子和右孩子)。在实际应用中,需要确保BiTree
类型定义正确,通常是一个包含数据和左右子树指针的结构体。