95 不同的二叉搜尋樹 II

2021-10-08 09:14:57 字數 949 閱讀 4834

題解:1. 申請儲存每個[st][ed]得空間

2. 初始化空間 複雜度為o(n^2)

3. 每次計算完st到ed得全排列都儲存起來(儲存st - ed得記憶)下次搜尋可以直接獲取

4. 如果memo[st][ed]不空,就表示儲存過,直接返回。

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class solution ;

int begin = 1;

int end = n;

// 分配空間

table.resize(n+1, vector>(n+1, vector()));

return dfs(begin, n);

}vectordfs(int begin, int end) );

}// 記憶化搜尋

if(!table[begin][end].empty())

vectorresult;

// 遍歷根結點的所有情況

for(int i = begin; i <= end; ++i) }}

// 記錄

table[begin][end] = result;

return std::move(result);}};

95 不同的二叉搜尋樹 II

二叉搜尋樹,又被稱為是二叉查詢樹 二叉排序樹,這種樹其左子樹所有節點的值均小於根節點的值,其右子樹所有節點的值均大於根節點的值,並且其左 右子樹均為二叉搜尋樹。空樹也是二叉搜尋樹。方法一 遞迴法 與這道題類似的是那道 96不同的二叉搜尋樹 在96中我們曾分析到,由於給定的節點值為1 n,是一組從小到...

95 不同的二叉搜尋樹 II

給定乙個整數 n,生成所有由 1 n 為節點所組成的二叉搜尋樹。示例 輸入 3 輸出 1,null,3,2 3,2,null,1 3,1,null,null,2 2,1,3 1,null,2,null,3 解釋 以上的輸出對應以下 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 ...

95 不同的二叉搜尋樹 II

給定乙個整數 n,生成所有由 1 n 為節點所組成的二叉搜尋樹。示例 輸入 3 輸出 1,null,3,2 3,2,null,1 3,1,null,null,2 2,1,3 1,null,2,null,3 解釋 以上的輸出對應以下 5 種不同結構的二叉搜尋樹 1 3 3 2 1 3 2 1 1 3 ...