原创 A1110

完全二叉樹的判定方法:進行層次遍歷,並且讓空結點也入隊,如果在訪問完N個非空結點之前訪問到了空結點,那麼說明不是完全二叉樹。 一個測試點過不了:發現是因爲我通過返回值是否是root來判斷是否爲二叉樹,而當n=1即只有一個根結點的情

原创 A1102

二叉樹反轉reverse:每個根結點的左右子樹交換位置. 因爲題目直接給的是結點編號的關係,因此本題用二叉樹的靜態寫法會非常方便. swap()交換左右孩子位置. #include<cstdio> #include<cstdlib

原创 A1037

本題思路正確,注意點:出現段錯誤可能原因: 1、數組給小了 2、數組下標超出數組大小了 #include<cstdio> #include<cstdlib> #include<string.h> #include<math.h>

原创 A1024

#include<cstdio> #include<cstdlib> #include<string.h> #include<math.h> #include<iostream> #include<vector> #include

原创 A1032

思路:首先將第一個鏈表所遍歷到的所有地址存儲下來,然後遍歷第二個鏈表,一旦遍歷到的地址在第一個鏈表中存在,便找到了. 注意點: 1、遇到%d%c在一塊輸入時要小心%c會吸收空格. 2、地址是5位數,輸出時千萬不能忘了%+05d,此

原创 A1078

本題思路:1、根據user_size,確定max_size,從當前user_size值開始向後逐個遍歷,確定max_size爲遍歷到的第一個素數. 2、輸入n個待存數,通過公式H(key)=key%TSize作變換,用bool型數

原创 A1067

思路沒問題,但細節上還欠缺,運行時兩個測試點運行超時,定位在兩個for循環上,卻不知怎麼優化. #include<cstdio> #include<cstdlib> #include<string.h> #include<math

原创 A1043

沒做出. 關鍵點: 1、將二叉搜索樹建起來. 2、先序鏡像遍歷二叉搜索樹. 3、後序鏡像遍歷二叉搜索樹. #include<cstdio> #include<cstdlib> #include<string.h> #include

原创 A1015

本題思路:1、記錄N是否爲素數的判斷(開始遺漏了這處的判斷) 2、將N轉換爲d進制記錄在數組中 3、反轉,實質是數組從下標0處開始遍歷 4、將反轉後的d進制轉換爲十進制 5、對轉換後的十進制判斷是否是素數,同時,結合最開始對N是否

原创 A1053

本題最重要的點: 由於最後的輸出需要按權值從大到小排序,因此在讀入時要事先對每個結點的子節點vector進行排序(即對vector中的結點按權值從大到小排序),這樣在遍歷時就會優先遍歷到權值大的子結點. 開始沒有做這個預處理,導致

原创 A1097

本題思路: 遍歷整個鏈表,篩選出兩個結構體數組,一個放本體,另一個放副本.通過bool類型數組中的記錄判斷當前遍歷到的key是本體還是副本,再將其放入對應的結構體中. 注意點:可能存在無效結點. #include<cstdio>

原创 A1041

一開始沒讀懂題目,將unique翻譯成了公平,然後便將重心移向了尋找排在最中間的數,徹底走歪了。 #include<cstdio> #include<cstdlib> #include<string.h> #include<ios

原创 A1086

本題的關鍵是對所給樣例的理解,看了算法筆記才明白,push的次序是先序遍歷順序,pop的次序是中序遍歷順序.其餘跟A1020一樣. A1020通過後序、中序遍歷獲取二叉樹 A1086通過先序、中序遍歷獲取二叉樹 #include<

原创 A1047

本題比較容易,直接ac了 最後一個測試點用時780ms #include<cstdio> #include<cstdlib> #include<string.h> #include<iostream> #include<vecto

原创 A1064

沒寫出. 本題是由已知完全二叉樹遍歷得到中序遍歷序列的逆用. 已知完全二叉樹中序遍歷序列以及樹的輪廓,有了樹的輪廓框架,即可進行中序遍歷,從而將中序遍歷序列中的值依次填充到樹的框架中,充實樹,最後得到完整的樹(擁有權重即每個結點的