給定乙個整數 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 2
/ / \ \
2 1 2 3
分析:這個題目初始看的時候,還是需要注意到生成樹的要求,二叉搜尋樹,即根節點比任何左子樹的元素大,比右子樹的小。還要注意儲存的結果vector,這其實是存了每棵樹的根節點。就有了以下思路
1對於位置為i,作為根結點,那麼generate(1,i-1)可以生成左子樹vectorleft,generate(i+1,n)生成右子樹treenode* right。
2 對於生成的,需要加兩個巢狀迴圈,就是for(auto leftnode:left) for(auto rightnode:right).分別接到以i為value的根節點。
root->left = leftnode,root->right = rightnode;
3 只需要遍歷一遍每個數(1:n)作為根節點,重複1,2操作,就能生成所有的樹了
4 邊界條件,當generate(start,end),start>right就得跳出來,但是相等的時候可以,因為乙個結點仍然可以作為乙個數。另外,注意題目是(1:n),意味著給0就不行。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution ;
}vectorgenerate(int left,int right)
for(int i=left;i<=right;i++)}}
return ans;
}};
LeetCode 95 不同的二叉搜尋樹
給定乙個整數 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 ...
leetcode 95 不同的二叉搜尋樹
題目 給定乙個整數 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 ...
Leetcode95 不同的二叉搜尋樹 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 2...