递归与非递归算法层次遍历求二叉链表树的高度

int Btdepth(BiTree T){
	//层次遍历的非递归算法求二叉树的高度
	if(!T){
		return 0;
	} 
	int front=-1,rear=-1;
	int last=0,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;
}

int BiTreedepth2(BiTree T){
	//层次遍历的递归算法求二叉树的高度
	if(T==NULL){
		return 0;
	}
	ldept=BiTreedepth2(T->lchild);
	rdept=BiTreedepth2(T->rchild);
	if(ldept<rdept){
		return ldept+1;
	}else{
		return rdept+1;
	}
	
	
	
}

猜你喜欢

转载自blog.csdn.net/qq_46351409/article/details/128164200