DS部落格作業 樹

2022-05-19 23:29:15 字數 2416 閱讀 8324

在樹這一章節,我們學習的是二叉樹的演算法。

樹的構建:一種是直接給樹的順序儲存結構的字串,一種是通過先序遍歷和中序遍歷、或中序遍歷和後序遍歷來構造樹(理解的還比較亂),還 有一種哈夫曼樹的構造。

樹的遍歷:比較難的遍歷是層次遍歷,層次遍歷需要利用環形佇列(需複習)來進行操作。

線索二叉樹到現在還是傻傻分不清。

結構體的構建也超級重要。

在樹中常常會用到遞迴演算法,遞迴口的設定也是一大難點。

輸入表示二叉樹的順序儲存結構的字串;

根據字串構造樹

層次遍歷

建立樹createbt(string str,int i)

求帶權路徑長度和void getwpl(bintree bt,int h,int &wpl )

(這題是在上機考上寫的,就把上機考的提交列表交了,紅色框框內為我的提交記錄)

定義兩個樹指標,指向當前位置指標curndoe,指向每層最後乙個節點位置的指標lastnode;

定義乙個樹結構型別的佇列q;

定義控制層數變化的變數flag,令flag=1;

令curnode=bt;

令lastnode=bt;

if 樹為空 then

輸出「null」;

return;

end if

將根節點入隊;

while 佇列不為空 do

curnode=隊首元素;

if curnode有左孩子 then

curnode的左孩子進隊;

end if

if curnode有右孩子 then

curnode的右孩子進隊;

end if

if flag=1 then

輸出格式「層數:」;

end if

if curnode為下一層的最後乙個元素(即curnode=lastnode) then

輸出目前隊首結點;

出隊;lastnode=隊尾結點;

flag=1;

end if

其他情況

輸出隊首結點;

出隊;flag=0;

給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。

輸入格式:

輸入第一行給出乙個正整數n(<=30),是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空格分隔。

輸出格式:

在一行中輸出該樹反轉後的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

輸入樣例:

71 2 3 4 5 6 7

4 1 3 2 6 5 7

輸出樣例:

4 6 1 7 5 3 2

不必做映象反轉,只用在層次遍歷的時候,先加入右兒子結點,再加入左兒子結點即可。

這道題按正常思路就是在建樹的時候交換非葉子節點的左右孩子。但在正確的**卻是,只要在層次遍歷的時候,將改動一下就可以,勝在靈活。

DS部落格作業03 樹

這個作業屬於哪個班級 資料結構 網路2011 2012 這個作業的位址 ds部落格作業03 樹 這個作業的目標 學習樹結構設計及運算操作 姓名 樹題目集總得分,請截圖,截圖中必須有自己名字。題目至少完成2 3,否則本次作業最高分5分。學習總結,請結合樹的圖形展開分析。樹的順序儲存和鏈式儲存結構,並分...

DS部落格作業05 樹

通過這次對樹的學習,這是第一次學習非線性結構的資料結構,之前都是學線性的,感覺有點不習慣,做題之後 感覺線性和非線性的區別也就是遍歷的方法不一樣,以前線性結構遍歷都是用迴圈,到了非線性結構遍歷則都是 用遞迴。樹結構我覺得就分為兩種多叉樹和二叉樹,二叉樹結構體都是用左右孩子,而多叉樹結構體都是孩子和 ...

DS部落格作業05 樹

說明 由於在日常提交列表中除錯過程以及碰到的問題不太明顯,所以將上機考試中的困難點列出輸入一行中綴表示式,轉換一顆二叉表示式樹,並求解.建立二叉表示式樹 建立字元棧op 樹根棧tree op.push 遍歷 str i if 是數字 依次存入樹根棧內 if 是符號 判斷 str i 與 op棧頂的優...