非遞歸算法實現二叉樹高度


思路:

嘻嘻,請讀者自己手動模擬。博主這里不知道怎么說。

拓展:

該算法思路也適用於

(1)每層的結點個數

(2)樹的最大寬度

(3)節點位於某一層

int height(BiTree T){

if(T==null)
	return 0;
int front=-1, rear=-1;//front 出隊指針   rear  入隊指針
int last = 0, level=0;//last 每一層的最右指針(front==last時候一層遍歷結束  level++)
BiTree Q[Maxsize];//模擬隊列
Q[++rear] = T;
BiTree p;
while(front<rear){
	p = Q[++front];//開始出隊   因為front要趕到lash  實現level++
	if(p->lchild)
		Q[++rear] = p->lchild;
	if(p->rchild)
		Q[++rear] = p->rchild;
	if(front==last){
		level++;
		last=rear;//last指向下層節點
	}
}

}

您可能感興趣的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM