Leetcode 95 不同的二叉搜索树 II

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    // 最后需要返回一个所有根节点的集合, 所以这个题思路有点怪
    // 因为每次深搜返回左、右子树的根节点集合,所以还需要它动将他们拼接
    public List<TreeNode> dfs(int left, int right){
      List<TreeNode> allNodes = new ArrayList<>();
      if(left > right){
        allNodes.add(null);
        return allNodes;
      }
      for(int i = left; i <= right; i++){
        List<TreeNode> leftTrees = dfs(left, i - 1);
        List<TreeNode> rightTrees = dfs(i + 1, right);
        for(TreeNode leftNode : leftTrees){
          for(TreeNode rightNode : rightTrees){
            TreeNode now = new TreeNode(i);
            now.left = leftNode;
            now.right = rightNode;
            allNodes.add(now);
          }
        }
      }
      return allNodes;
    }
    public List<TreeNode> generateTrees(int n) {
      if(n == 0){
        return new ArrayList<TreeNode>();
      }
      return dfs(1, n);
    }
}
相关推荐
现在,此刻5 小时前
leetcode 11. 盛最多水的容器 -java
java·算法·leetcode
☆璇5 小时前
【C++】哈希的应用:位图和布隆过滤器
算法·哈希算法
一株月见草哇7 小时前
Matlab(4)
人工智能·算法·matlab
hans汉斯7 小时前
基于深度学习的苹果品质智能检测算法研究
人工智能·深度学习·算法
火车叨位去19497 小时前
力扣top100(day01-05)--矩阵
算法·leetcode·矩阵
mit6.8247 小时前
[Robotics_py] 机器人运动模型 | `update`函数 | 微积分&矩阵
人工智能·python·算法
地平线开发者9 小时前
征程 6 | 自定义查表算子实现量化部署
算法·自动驾驶
冬夜戏雪9 小时前
java学习 leetcode 二分查找 图论
java·学习·leetcode
火车叨位去194910 小时前
力扣top100(day02-05)--二叉树 02
算法·leetcode·职场和发展
James. 常德 student10 小时前
leetcode-hot-100 (图论)
算法·leetcode·图论