動手刷LeetCode 給節點數找所有二叉樹

2021-10-04 08:05:03 字數 1147 閱讀 3161

給出節點數,然後找出所有可能的二叉樹形狀;

搞懂遞迴和動態規劃

我們從序列 1 …n 中取出數字 i,作為當前樹的樹根。於是,剩餘 i - 1 個元素可用於左子樹,n - i 個元素用於右子樹;

不行,我感覺遞迴太難理解了;宣布失敗

class

solution;}

return

solve(1

,n);

}private

: vector>

solve

(int left,

int right)

; vector>res;

for(

int i = left; i <= right; i++)}

}return res;}}

;

95%以上的遞迴都可以用動態規劃來改寫;

對樹的操作和指標理解很有幫助

lass solution 

treenode*

copy

(treenode* root)

vector>

generatetrees

(int n)

//連線右子樹}}

}return dp[n];}

};

注意多使用私有方法

class

solution

treenode *newhead =

newtreenode

(i);

newhead-

>left =

copytree

(head)

; dp[j]

= newhead;}}

return dp;

} treenode*

copytree

( treenode *node )

treenode*

search

( treenode *node,

int val )

};

** 看**沒有框架思路,看起來很頭疼;還有不能只是眼看,還是得用手寫出來,畫出來**

LeetCode刷題 129 根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個0 9的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑1 2 3代表數字123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 1 2 3 輸出 25 解釋 從根到葉子節點路徑 1 2...

動手刷LeetCode 判斷括號有效

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。字串知識點 string s 常見操作方法 解法一 棧配對法 這是乙個有技術含量的演算法 定義res作為乙個棧 遍歷整個字串,將每個左括號加入res ...

刷leetcode之刪除鍊錶節點

請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只被給定要求被刪除的節點。現有乙個鍊錶 head 4,5,1,9 它可以表示為 示例 1 輸入 head 4,5,1,9 node 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 ...