leetcode95. 不同的二叉搜索树 II(递归)
生活随笔
收集整理的這篇文章主要介紹了
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/ / \ \2 1 2 3
代碼
public List<TreeNode> generateTrees(int n) {if (n == 0) return new ArrayList<TreeNode>();return generate(1, n);}public List<TreeNode> generate(int left, int right) {if (left > right) return new ArrayList<TreeNode>() {{add(null);}};if (left == right) return new ArrayList<TreeNode>() {//只有一個元素{add(new TreeNode(left));}};ArrayList<TreeNode> res = new ArrayList<>();for (int i = left; i <= right; i++) {//選擇節點作為父節點List<TreeNode> leftTree = generate(left, i - 1);List<TreeNode> rightTree = generate(i + 1, right);for (TreeNode l : leftTree)//遍歷左右節點的可能性for (TreeNode r : rightTree) {TreeNode temp = new TreeNode(i);temp.left = l;temp.right = r;res.add(temp);}}return res;}總結
以上是生活随笔為你收集整理的leetcode95. 不同的二叉搜索树 II(递归)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到和男友分手是什么意思
- 下一篇: leetcode面试题 16.19. 水