王道ch4-BiTree-5用非递归算法计算二叉树的高度

//任务:用非递归算法计算二叉树的高度
//算法思想:使用层次遍历,利用队列指针,设置一个专门的指针last专门指向一层元素的最后一个元素
//将一层中最后一个元素之前的元素依次出队,并将每个元素的孩子结点入队,那么当一层之中最后一个结点
//出队之时,这一层所有的孩子结点已经全部入队,即此时的尾指针只想了下一层最后一个结点之后,
//我们将last指向尾指针,以代表本层遍历结束
int Btdepth(BiTree& T)
{
	int last,level=0;
	SqQueue Q; InitQueue(Q);
	BiTree p = T;
	EnQueue(Q,T);
	last = Q.rear;
	while (!IsEmpty(Q))
	{
		DeQueue(Q,p);
		if (p->lchild)
			EnQueue(Q, p->lchild);
		if (p->rchild)
			EnQueue(Q, p->rchild);
		if (Q.front == last)
		{
			level++;
			last = Q.rear;
		}
	}
	return level;
}

 

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页