首页 > 其他分享 >#yyds干货盘点# LeetCode面试题:不同的二叉搜索树 II

#yyds干货盘点# LeetCode面试题:不同的二叉搜索树 II

时间:2023-05-08 23:32:33浏览次数:42  
标签:yyds 面试题 TreeNode int generateTrees II allTrees return null

1.简述:

给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。

 

示例 1:

#yyds干货盘点# LeetCode面试题:不同的二叉搜索树 II_List

输入:n = 3
输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]

示例 2:

输入:n = 1
输出:[[1]]

2.代码实现:

class Solution {
    public List<TreeNode> generateTrees(int n) {
        if (n == 0) {
            return new LinkedList<TreeNode>();
        }
        return generateTrees(1, n);
    }

    public List<TreeNode> generateTrees(int start, int end) {
        List<TreeNode> allTrees = new LinkedList<TreeNode>();
        if (start > end) {
            allTrees.add(null);
            return allTrees;
        }

        // 枚举可行根节点
        for (int i = start; i <= end; i++) {
            // 获得所有可行的左子树集合
            List<TreeNode> leftTrees = generateTrees(start, i - 1);

            // 获得所有可行的右子树集合
            List<TreeNode> rightTrees = generateTrees(i + 1, end);

            // 从左子树集合中选出一棵左子树,从右子树集合中选出一棵右子树,拼接到根节点上
            for (TreeNode left : leftTrees) {
                for (TreeNode right : rightTrees) {
                    TreeNode currTree = new TreeNode(i);
                    currTree.left = left;
                    currTree.right = right;
                    allTrees.add(currTree);
                }
            }
        }
        return allTrees;
    }
}

标签:yyds,面试题,TreeNode,int,generateTrees,II,allTrees,return,null
From: https://blog.51cto.com/u_15488507/6256386

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:跳跃游戏 II
    题目:给定一个长度为 n 的 0索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i+j] 处:0<=j<=nums[i] i+j<n返回到达 nums[n-1] 的最小跳跃次数。生成的......
  • Java后端真实、靠谱、强大的面试题网站:面试梯
    ​ 本文分享一个给力的Java后端面试题网站:面试梯。网址:https://offer.skyofit.com这套题真实、高频、全面、有详细答案、保你稳过面试,让你成为offer收割机。题目包括:Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、分布式、SpringCloud......
  • 全景剖析阿里云容器网络数据链路(三)—— Terway ENIIP
    来源https://help.aliyun.com/practice_detail/602821本系列联合作者容器服务@谢石前言近几年,企业基础设施云原生化的趋势越来越强烈,从最开始的IaaS化到现在的微服务化,客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度,也一直在高速的......
  • Mysql面试题
    1.Mysql基础1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、groupby子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;6、计算所有的表达式;7、select的字段;8、使用orderby对结果集进行排序。SQL语言不同......
  • Python实操面试题
    1、一行代码实现1--100之和#利用sum()函数求和sum(range(1,101))2、如何在一个函数内部修改全局变量#利用global在函数声明修改全局变量a=5deffunc(): globalaa=10func()print(a)#结果:103、列出5个python标准库'''os:提供了不少与操作系统......
  • Django面试题
    1.DjangoORM查询中select_related和prefetch_related的区别??defselect_related(self,*fields)性能相关:表之间进行join连表操作,一次性获取关联的数据。总结:1.select_related主要针一对一和多对一关系进行优化。2.select_related使用SQL的JOIN语句进行......
  • Flask 面试题
    1.Flask中正则URL的实现?app.route('')中URL显式支持string、int、float、pathuuidany6种类型,隐式支持正则。第一步:写正则类,继承BaseConverter,将匹配到的值设置为regex的值。1.classRegexUrl(BaseConverter):2.def__init__(self,url_map,*args):3.......
  • tornado面试题
    tornado1、tornado中的gen.coroutine的作用?#tornado的coroutine装饰器,使得回调函数可以用同步的方式实现,极大提高了代码的可读性。它的实现涉及到了yield,ioloop和Future的模块。2、简述tornado框架特点及应用场景。#web聊天室,在线投票等操作!3、tornado框架中Futu......
  • Python基础面试题
    1、Python和Java、PHP、C、C#、C++等其他语言的对比?'''1.C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言。C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强......
  • Python面向对象面试题
    1、简述面向对象的三大特性。#答案封装: 封装指的是把一堆数据属性与方法数据放在一个容器中,这个容器就是对象。让对象可以通过"."来调用对象中的数据属性与方法属性。继承: 继承指的是子类可以继承父类的数据属性与方法属性,并可以对其进行修改或使用。多......