搜尋,動態規劃,二叉樹的時間複雜度計算通用公式

2021-09-28 11:27:53 字數 428 閱讀 3476

搜尋的時間複雜度:o(答案總數 * 構造每個答案的時間)

舉例:subsets問題,求所有的子集。子集個數一共 2^n,每個集合的平均長度是 o(n) 的,所以時間複雜度為 o(n * 2^n),同理 permutations 問題的時間複雜度為:o(n * n!)

動態規劃的時間複雜度:o(狀態總數 * 計算每個狀態的時間複雜度)

舉例:********,數字三角形的最短路徑,狀態總數約 o(n^2) 個,計算每個狀態的時間複雜度為 o(1)——就是求一下 min。所以總的時間複雜度為 o(n^2)

用分治法解決二叉樹問題的時間複雜度:o(二叉樹節點個數 * 每個節點的計算時間)

舉例:二叉樹最大深度。二叉樹節點個數為 n,每個節點上的計算時間為 o(1)。總的時間複雜度為 o(n)

b 樹查詢時間複雜度 二叉排序樹的時間複雜度

終於開始寫二叉排序樹。如果這裡有個程式,裡面有兩個程式塊,它們是先後順序。第乙個程式塊執行時間複雜度是o n 第二個程式塊執行時間複雜度也是o n 我的大腦就會覺得這個程式總的時間複雜度就是 o n o n 好像很大,好像其實比起o n 2 還是小的。因為常數係數似乎可以忽略不計。可能因為我大腦不喜...

二叉排序樹的時間複雜度

二叉排序樹又稱二叉查詢樹,它或是一棵空的二叉樹,或是具有下列性質的二叉樹 由上述定義可知,中虛遍歷二叉排序樹可以得到乙個按關鍵碼有序的序列。cpp view plain copy print template struct binode class bisorttree void bisorttre...

Morris神級遍歷二叉樹,時間複雜度為O(1)

morris演算法介紹 morris演算法在遍歷的時候避免使用了棧結構,而是讓下層到上層有指標,具體是通過底層節點指向null的空閒指標返回上層的某個節點,從而完成下層到上層的移動。我們知道二叉樹有很多空閒的指標,比如某個人節點沒有右孩子,我們稱這種情況為空閒狀態,morris演算法的遍歷就是利用了...