當前位置:首頁 > 芯聞號 > 充電吧
[導讀]題面:L3-010. 是否完全二叉搜索樹 時間限制 400 ms內(nèi)存限制 65536 kB代碼長度限制 8000 B判題程序 Standard 作者 陳越將一系列給定數(shù)字順序插入一個


題面:


L3-010. 是否完全二叉搜索樹 時間限制 400 ms
內(nèi)存限制 65536 kB
代碼長度限制 8000 B
判題程序 Standard 作者 陳越

將一系列給定數(shù)字順序插入一個初始為空的二叉搜索樹(定義為左子樹鍵值大,右子樹鍵值小),你需要判斷最后的樹是否一棵完全二叉樹,并且給出其層序遍歷的結(jié)果。

輸入格式:

輸入第一行給出一個不超過20的正整數(shù)N;第二行給出N個互不相同的正整數(shù),其間以空格分隔。

輸出格式:

將輸入的N個正整數(shù)順序插入一個初始為空的二叉搜索樹。在第一行中輸出結(jié)果樹的層序遍歷結(jié)果,數(shù)字間以1個空格分隔,行的首尾不得有多余空格。第二行輸出“YES”,如果該樹是完全二叉樹;否則輸出“NO”。

輸入樣例1:

9
38?45?42?24?58?30?67?12?51

輸出樣例1:

38?45?24?58?42?30?12?67?51
YES

輸入樣例2:

8
38?24?12?45?58?67?42?51

輸出樣例2:

38?45?24?58?42?12?67?51
NO



總結(jié):

??? cccc不堪回首,自己渣,發(fā)揮又不好,題目質(zhì)量不高,編譯器還有毒。真的如很多人所說,cccc的題目質(zhì)量有待提高,形式也有待改進,題意描述不夠清晰,全靠腦洞自行補充,前面L1完全沒必要,浪費選手精力,考察知識面也太窄,弄來弄去,總是樹啊,最短路啊什么的。不能帶模板,被好多人吐槽。題目數(shù)據(jù)太水,太容易騙分,隊友錯誤的代碼,用了點技巧,滿分了。沒有數(shù)據(jù)范圍....,服務器性能太好,完全不能用acm的方式計算復雜度.....。團體的概念完全沒有體現(xiàn),只是簡單的1+1=2,希望能向acm區(qū)域賽看齊。不過,畢竟第一屆,考察的性質(zhì)也不一樣,和近40年歷史的acm存在差距,也是可以理解的。希望,在今后的比賽中,能更加體現(xiàn)團隊意識,比如幾個選手刷高級題,幾個選手刷中級題,或者說超大題量,五六個選手瘋狂刷,看總分,而不是僅僅每個人都刷一樣的題,沒太大趣味,也不能體現(xiàn)團隊的合作意識。言歸正傳。


解題:

???? 問給定的一棵樹,按層序遍歷輸出節(jié)點的值,并且判斷是不是完全二叉樹。

???? 不記得完全二叉樹的定義了,比賽的時候沒多想,畫了畫樣例,以為是某個節(jié)點的子節(jié)點數(shù)為1,則不是完全二叉樹,其實,國內(nèi)外完全二叉樹的定義也是各異的,題目應該給出詳盡的解釋,而不是讓選手去猜。

???? 前一天熬夜了,傻乎乎的,子節(jié)點數(shù)為0,我寫了個return.....怎么查都沒查出來,浪費了三四十分鐘,造成后面全盤崩....


定義:


說法一:

????? 《算法導論》第3版P690有定義如下:
?????? 滿二叉樹:每個節(jié)點是葉節(jié)點或者度為2.
?????? 完全二叉樹:所有葉節(jié)點深度相同,且所有內(nèi)部節(jié)點度為2. (樹的節(jié)點總數(shù)達到最大)


說法二:【本題采用的是這種定義】

????

1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。

作者:灰杉樹
鏈接:http://www.zhihu.com/question/19809666/answer/88158084
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。

作者:灰杉樹
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。

作者:灰杉樹
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。

作者:灰杉樹
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。

作者:灰杉樹
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。

作者:灰杉樹
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。

作者:灰杉樹
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 1.根二叉樹(Rooted Binary Tree):
有一個根結(jié)點,每個結(jié)點至多有兩個孩子。
2.滿二叉樹(Full Binary Tree):
要么是葉子結(jié)點(結(jié)點的度為0),要么結(jié)點同時具有左右子樹(結(jié)點的度為2)。
3.完全二叉樹(Complete Binary Tree):
每層結(jié)點都完全填滿,在最后一層上如果不是滿的,則只缺少右邊的若干結(jié)點。
4.完美二叉樹(Perfect Binary Tree)
所有的非葉子結(jié)點都有兩個孩子,所有的葉子結(jié)點都在同一層。即每層結(jié)點都完全填滿。
5.無限完全二叉樹(Infinite Complete Binary Tree):
每個結(jié)點都有兩個孩子,結(jié)點的層數(shù)是無限的。
6.平衡二叉樹(Balanced Binary Tree):
也稱為AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。


作者:灰杉樹
來源:知乎
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。 滿二叉樹通俗理解如下:一個結(jié)點要么是葉結(jié)點,要么是有兩個子結(jié)點的中間結(jié)點。
???? 完全二叉樹通俗理解如下:從根結(jié)點開始,依次從左到右填充樹結(jié)點。由此可見,滿二叉樹和完全二叉樹沒有特別的關系。



思路:

???? 按照,插入值和當前位置值的關系,建立二叉樹,設置初始值為0,代表某節(jié)點為空,并同時給該點分配完全二叉樹下應該為的id,用于后續(xù)判斷是否是完全二叉樹。用bfs遍歷,并用其現(xiàn)有id和應為id比較,若不符,則不是完全二叉樹。


代碼:


#include#include#include#include#includeusing?namespace?std;
int?tree[200],le[200],ri[200],cnt=0,path[200],p=0,idd[200];
bool?flag;
//建樹
void?insert(int?x,int?v,int?id)
{
????if(tree[x]==0)
	{
		tree[x]=v;
		idd[x]=id;
		cnt++;
	}
	else
	{
		if(v>tree[x])
		{
			if(le[x]==0)
			??le[x]=cnt+1;
			insert(le[x],v,id*2);
		}
		else
		{
???????????if(ri[x]==0)
			???ri[x]=cnt+1;
		???insert(ri[x],v,id*2+1);
		}
	}
}
//層序遍歷
void?solve()
{
	int?cur;
	queueqe;
	qe.push(0);
	while(!qe.empty())
	{
???????cur=qe.front();
	???qe.pop();
	???//是否是完全二叉樹的判斷
	???if(p+1<idd[cur])
		???flag=0;
	???path[p++]=tree[cur];
	???if(le[cur]&&ri[cur])
	???{
		???qe.push(le[cur]);
		???qe.push(ri[cur]);
	???}
	???else?if(le[cur]||ri[cur])
	???{
		???if(le[cur])
		?????qe.push(le[cur]);
???????????else
			?qe.push(ri[cur]);
	???}
	}
}
int?main()
{
	int?n,tmp;
	scanf("%d",&n);
????for(int?i=1;i<=n;i++)
	{
		scanf("%d",&tmp);
		insert(0,tmp,1);
	}
	flag=1;
	solve();
	printf("%d",path[0]);
	for(int?i=1;i<p;i++)
	{
		printf("?%d",path[i]);
	}
	printf("n");
	if(flag)
		printf("YESn");
	else
		printf("NOn");
	return?0;
}




本站聲明: 本文章由作者或相關機構(gòu)授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉