資料結構 樹 思考題 5

2021-10-04 03:07:47 字數 1551 閱讀 4088

浙江大學 資料結構 思考題+每週練習答案彙總

題目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...