95. 不同的二叉搜索树 II

我会带着你远行 2022-12-24 00:38 247阅读 0赞

题目来源

95. 不同的二叉搜索树 II

题目描述

在这里插入图片描述

题目解析

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode() {}
  8. * TreeNode(int val) { this.val = val; }
  9. * TreeNode(int val, TreeNode left, TreeNode right) {
  10. * this.val = val;
  11. * this.left = left;
  12. * this.right = right;
  13. * }
  14. * }
  15. */
  16. class Solution {
  17. public List<TreeNode> generateTrees(int n) {
  18. if(n == 0){
  19. return new LinkedList<>();
  20. }
  21. return helper(1, n);
  22. }
  23. private List<TreeNode> helper(int start, int end){
  24. List<TreeNode> list = new LinkedList<>();
  25. if (start > end){
  26. list.add(null); // 必须,否则无法进入TreeNode l : left等循环
  27. return list;
  28. }
  29. for (int i = start; i <= end; i++){
  30. List<TreeNode> left = helper(start, i - 1);
  31. List<TreeNode> right = helper(i + 1, end);
  32. for (TreeNode l : left){
  33. for (TreeNode r: right){
  34. TreeNode root = new TreeNode(i);
  35. root.left = l;
  36. root.right = r;
  37. list.add(root);
  38. }
  39. }
  40. }
  41. return list;
  42. }
  43. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,247人围观)

还没有评论,来说两句吧...

相关阅读