陣列生成樹,用於leetcode本地測試 c

2021-10-09 20:47:57 字數 990 閱讀 9813

在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 個子節點,那麼該節點為葉節點。每個非葉節點的值等於其左子樹和右子樹中葉節點的最大值的乘積。在所有這樣的二叉樹中,...