卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

判斷是否是完全二叉樹(shù)算法 如何判斷二叉樹(shù)是否為完全二叉樹(shù)?

如何判斷二叉樹(shù)是否為完全二叉樹(shù)?1. 首先,了解什么是完整的二叉樹(shù)。完全二叉樹(shù)是從完全二叉樹(shù)派生出來(lái)的。完全二叉樹(shù)的倒數(shù)第二層必須是完全二叉樹(shù),最后一層可能不是完全二叉樹(shù),但是葉節(jié)點(diǎn)是連續(xù)的。2. 如

如何判斷二叉樹(shù)是否為完全二叉樹(shù)?

1. 首先,了解什么是完整的二叉樹(shù)。完全二叉樹(shù)是從完全二叉樹(shù)派生出來(lái)的。完全二叉樹(shù)的倒數(shù)第二層必須是完全二叉樹(shù),最后一層可能不是完全二叉樹(shù),但是葉節(jié)點(diǎn)是連續(xù)的。

2. 如何判斷它是否是一個(gè)完全二叉樹(shù)

我們使用層次遍歷來(lái)判斷它是否是一個(gè)完全二叉樹(shù)。遍歷時(shí)有兩種情況

如果有一個(gè)右子樹(shù)沒(méi)有左子樹(shù),它肯定不是一個(gè)完全二叉樹(shù)

如果有一個(gè)節(jié)點(diǎn)不是所有的左子樹(shù)和右子樹(shù),那么后面的節(jié)點(diǎn)必須是一個(gè)葉節(jié)點(diǎn)。如果它不是一個(gè)葉子節(jié)點(diǎn),那么它肯定不是一個(gè)完整的二叉樹(shù)二叉樹(shù)

以java代碼為例

讓我們來(lái)談?wù)勥@個(gè)方法,并自己編寫(xiě)。完全二叉樹(shù):如果二叉樹(shù)的高度設(shè)為h,則每層(1-h-1)中的節(jié)點(diǎn)數(shù)除第h層外都達(dá)到最大值,并且第h層中的所有節(jié)點(diǎn)都連續(xù)地集中在最左邊。這是一個(gè)完整的二叉樹(shù)。判斷非常簡(jiǎn)單,廣度優(yōu)先搜索整個(gè)二叉樹(shù),一旦找到一個(gè)無(wú)子節(jié)點(diǎn)或只包含一個(gè)左子節(jié)點(diǎn),那么所有后續(xù)節(jié)點(diǎn)都必須是葉節(jié)點(diǎn)。否則,該樹(shù)不是一個(gè)完整的二叉樹(shù)。在實(shí)現(xiàn)中使用隊(duì)列。

判斷是否為完全二叉樹(shù)?

Int judgecomplete(BiTree BT)//判斷二叉樹(shù)是否是完全二叉樹(shù),如果是,返回1,否則返回0

{Int tag=0,BiTree P=BT,Q[]//Q是隊(duì)列,元素是二叉樹(shù)的節(jié)點(diǎn)指針,并且容量足夠大

if(P==null)return(1)

queueinit(q)queuein(q,P)//初始化隊(duì)列,根節(jié)點(diǎn)指針加入隊(duì)列

while(!Queueempty(q))

]{P=queueout(q)//退出

如果(P->lchild&!Tag)queuein(Q,P->lchild)//左子聯(lián)接

else{if(P->lchild)return 0//上一個(gè)節(jié)點(diǎn)為空,這個(gè)節(jié)點(diǎn)不為空

else Tag=1//第一個(gè)節(jié)點(diǎn)為空

if(P->rchild&!Tag)queuein(Q,P->rchild)//右子女加入隊(duì)伍

else if(P->rchild)return 0 else Tag=1

}//while

return 1}//判斷完成