力扣演算法題 096不同的二叉樹 二叉樹

2022-06-04 01:00:11 字數 797 閱讀 5526

給定乙個整數 n,求以 1 ... n 為節點組成的二叉搜尋樹有多少種?

示例:

輸入: 3

輸出: 5

解釋:給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹:

1 3 3 2 1

\ / / / \ \

3 2 1 1 3 2

/ / \ \

2 1 2 3

解題思路:

就跟斐波那契數列一樣,我們把n = 0 時賦為1,因為空樹也算一種二叉搜尋樹,那麼n = 1時的情況可以看做是其左子樹個數乘以右子樹的個數,左右字數都是空樹,所以1乘1還是1。那麼n = 2時,由於1和2都可以為跟,分別算出來,再把它們加起來即可。n = 2的情況可由下面式子算出:

dp[2] =  dp[0] * dp[1]   (1為根的情況)

+ dp[1] * dp[0]    (2為根的情況)

同理可寫出 n = 3 的計算方法:

dp[3] =  dp[0] * dp[2]   (1為根的情況)

+ dp[1] * dp[1]    (2為根的情況)

+ dp[2] * dp[0]    (3為根的情況)

1

class

solution 11}

12return

dp[n];13}

14 };

二叉樹 力扣刷題

把二叉樹上的每乙個節點的左右子節點進行交換 definition for a binary tree node.public class treenode class solution 給定乙個 完美二叉樹 其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下 struct node ...

力扣OJ題 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 把它直接看成只有三個節點 根節點,左子樹,右子樹 的樹,不需要展開,直接呼叫。這個題需要兩個方...

力扣刷題 合併二叉樹

題目描述 給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。算是第一次正式用力扣刷題,思路上是有想法的,但回...