在leetcode做題時,一些關於樹的題目,在本地編譯器很難除錯,主要的原因是無法獲得測試用例。這也是長期困擾筆者的乙個問題,所以「被迫」實現了用 vector 陣列建樹的**,方便生成想要的測試用例。這裡把它分享出來,或許你也需要。
treenode *
createtree
(vector<
int>v)
//使用逐層遍歷的方式,生成樹
queue>q;
treenode* root =
newtreenode
(v[0])
; q.
push
(root)
;int idx =1;
//用以表示當前陣列可用的元素下標
while
(!q.
empty()
&&idxsize()
) idx++;if
(idx >= v.
size()
)//判斷右子樹是否為空
if(v[idx]!=-
1)idx++;}
}return root;
}//main函式中呼叫**
intmain()
最後一層的葉子節點的空節點不用指明
*/ vector<
int>v =
; treenode* root=
createtree
(v);
//root就是測試用例的根節點
solution *temp =
newsolution()
; temp-
>
connect
(root)
;return0;
}
把createtree函式複製到自己的main函式前
在main函式中,改動陣列 v 的初始化元素,以建成自己想要的樹
LeetCode 5391 生成陣列
這道題我先從列舉dfs,需要使用到已經列舉的個數,之前的最大數 以及花費。然後稍微改下,所以狀態定義是dp i max num cost 表示已經列舉的個數,已經列舉的最大數 以及花費 的數量。然後設定dp 0 1 num 1,狀態轉移是從上乙個列舉位置轉移過來,記數dp,記錄每個狀態有多少個個數,...
陣列用於進製轉換
編乙個程式,其中呼叫函式 void tran int n,int d 用於將十進位制數 n轉換為 d進製數輸出,並輸出 d進製數中最大位值是多少,在第幾位。d的取值在 2 32 之間,數制d超過 10時,依次用 abc.代表其基本符號,如對 17進製而言,g代表其最大符號,對應十進位制的16。進製的...
leetcode 葉值的最小代價生成樹
給你乙個正整數陣列 arr,考慮所有滿足以下條件的二叉樹 每個節點都有 0 個或是 2 個子節點。陣列 arr 中的值與樹的中序遍歷中每個葉節點的值一一對應。知識回顧 如果乙個節點有 0 個子節點,那麼該節點為葉節點。每個非葉節點的值等於其左子樹和右子樹中葉節點的最大值的乘積。在所有這樣的二叉樹中,...