95. 不同的二叉搜索树 II
给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。
链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| function generateTrees(n: number): Array<TreeNode | null> { if (!n) return [] return traverse(1, n) };
function traverse(inStart: number, inEnd: number): TreeNode[] { const result = [] if (inStart > inEnd) { result.push(null) return result } for(let i = inStart; i <= inEnd; i++) { const left = traverse(inStart, i - 1) const right = traverse(i + 1, inEnd) const root = new TreeNode(i) const leftLen = left.length const rightLen = right.length for(let j = 0; j < leftLen; j++) { for(let k = 0; k < rightLen; k++) { const root = new TreeNode(i) root.left = left[j] root.right = right[k] result.push(root) } } } return result }
|