lintcode 不同的二叉樹II

2021-08-17 12:03:35 字數 567 閱讀 3511

解法思路:

要生成所有情況的二叉樹,首先肯定能想到遍歷所有的數作為頭結點的情況,構建頭結點的左右子樹的過程可以利用遞迴完成。此處難點應該在於 (1)同乙個數作為頭結點時,子樹可以有不同的結構;(2) 當前樹已經構造完成,應該將頭結點加入到結果vector中。

此處的解決辦法:遞迴的正常解法,從上往下遞迴,從下往上構造,在構造過程中,將左右子樹的所有情況都存在l,r兩個vector中,然後雙重迴圈,兩兩組合,作為當前節點的左右孩子,每一種組合就是一種樹的結構,將當前節點作為子樹的根存在res中,返回給上一層。

vectorgeneratetreetmp(int beg, int ends)

if(beg == ends)

for(int i=beg; i<=ends; ++i)}}

return res;

}vectorgeneratetrees(int n)

本題解法參照只是感覺沒有注釋,稍微標記一下。

LintCode 不同的二叉查詢樹

給出 n,問由 1 n 為節點組成的不同的二叉查詢樹有多少種?給出n 3,有5種不同形態的二叉查詢樹 1 3 3 2 1 3 2 1 1 3 2 2 1 2 3solution 對於該問題我們可以使用動態規劃來求解。對於動態規劃問題我們需要確定問題的狀態和狀態轉換方程。首先我們來確定問題的狀態 給定...

LintCode 等價二叉樹

題目描述 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4 就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。做題思路 本題給出的bool型別的函式來判斷二叉樹是否等價...

lintcode 等價二叉樹

1 題目 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。2 思路 對兩課二叉樹從以下幾種情況考慮 兩個均空,true...