浙江大學 資料結構 思考題+每週練習答案彙總
題目1:有個堆其元素在陣列中的序列為:58,25,44,18,10,26,20,12。如果呼叫deletemax函式刪除最大值元素,請猜猜看:程式中的for迴圈剛退出時變數parent的值是多少?
首先child = 2,然後判斷座標為2的和child+1=3的誰大,這裡44大,所以child=3
然後後面的都不成立,因為12小於44,我們讓座標為1的根節點值為44。
然後再進行迭代,一直往下走,最後結果為6。
其實我們只需要知道最後把12填充到哪個格仔裡就好了。
題目2:建堆時,最壞情況下需要挪動元素次數是等於樹中各結點的高度和。問:對於元素個數為12的堆,其各結點的高度之和是多少?
該題被題目迷惑了,沒有思考直接寫了答案。建堆時,倒數第二層算第一層,可以向下移動一次
倒數第三層算第二層,可以向下移動兩次。倒數第一層算最後一層,可以向下移動三次。
所以3*1+2*2+1*3=10
比如當這個堆剛放進陣列裡正好為最小堆的時候,我們要調整為最大堆:
在處理倒數第二行,12 13和8都要下去,然後處理倒數第二行時,3和6也都要下去,而且要一直下到底。
題目3:下列序列中哪個是最小堆?
a不是,因為第2個和第5個相比,28<55
b不是,最後面的52小於父節點的71
c是d不是,子節點2小於其父節點28
題目4::在最大堆 中插入83後,該最大堆為:
插入先放到最後面,檢視樹的關係:97—76,65 76—50,49 65—13,27
所以新加入的83掛在50下面,然後跟50對調。
所以最後乙個數一定是50.而且第二個數一定是83(因為是從根節點的左樹向上替換的,所以不會是第三個數)現在排除選項a和選項c和d。
最後選b。
題目5:對由同樣的n個整數構成的二叉搜尋樹(查詢樹)和最小堆,下面哪個說法是不正確的:
a正確,因為最小堆一定是完全二叉樹,同樣節點數量時高度最小。
b正確,我們由定義可以知道,該樹一定是左子節點大於當前節點大於右子節點,比如如下這樣的樹:
c符合最小堆的定義
d錯誤。不一定是從小到大,可能中間有亂序。
資料結構 樹 思考題3
浙江大學 資料結構 思考題 每週練習答案彙總 題目1 給出下面這棵樹的中序遍歷結果 根據中序遍歷的程式 我們可以看到它先不斷往左遍歷,然後在分叉處到根節點,再往右邊遍歷 首先到b,然後因為b的左邊什麼都沒有,所以再返回到b,列印b 然後再到d,列印d,然後再到a。之後遍歷右邊,分別依次輸出e和c 即...
資料結構 排序 思考題1
題目1 對於7個數進行氣泡排序,最壞情況下需要進行的比較次數為 第一輪冒泡,索引 1 的數與索引 2 的數比較,2與3比較 6與7比較,比較6次。第二輪就是5次。以此類推,到最後一輪只有乙個數的時候不進行比較,是0次。6 5 4 3 2 1 0 21 題目二 給定初始序列,氣泡排序和插入排序分別需要...
第5章思考題
目的 要求開發人員準確地理解使用者需要什麼,進行細緻地調查分析,將使用者的需求陳述轉化為完整的需求定義,再由需求定義轉化為相應的軟體需求規格說明。作用 需求分析雖處於軟體開發的初期階段,但它對於整個軟體開發過程以及產品質量至關重要。只有做好需求分析才能做出符合需要的軟體功能。業務需求 busines...