当前位置: 首页 > news >正文

力扣96. 不同的二叉搜索树

Problem: 96. 不同的二叉搜索树

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述

思路

一个数字做根节点的话可能的结果为:其左边数字做子树的组合数字乘以其右边数字做子树的个数之积

1.创建备忘录memo;
2.递归分别求取当前数字左边和右边数字做子树的数量(注意下面代码当左边界值大于有边界值时应当反回1)

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n是二叉树节点的个数

空间复杂度:

O ( h e i g h t ) O(height) O(height);其中 h e i g h t height height是二叉树的高度

Code

class Solution {int[][] memo;/*** Unique Binary Search Trees** @param n Given number* @return int*/public int numTrees(int n) {memo = new int[n + 1][n + 1];return count(1, n);}/*** Unique Binary Search Trees(Implementation function)** @param low  Left boundary* @param high Right boundary* @return int*/private int count(int low, int high) {if (low > high) {return 1;}//Check the memeif (memo[low][high] != 0) {return memo[low][high];}int res = 0;for (int mid = low; mid <= high; ++mid) {int left = count(low, mid - 1);int right = count(mid + 1, high);res += left * right;}memo[low][high] = res;return res;}
}
http://www.lryc.cn/news/353048.html

相关文章:

  • 哈希表的用途
  • k8s笔记 | 高度调度
  • Rom应用开发遇到得一些小bug
  • Python简介
  • C++完成特色旅游管理信息系统
  • 贵州大学24计算机考研数据速览,国家重点实验室22408复试线285分!贵州大学计算机考研考情分析!
  • 分区4K对齐那些事,你想知道的都在这里
  • 达梦数据库学习笔记
  • 安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)
  • 【知识蒸馏】多任务模型 logit-based 知识蒸馏实战
  • C:技术面试总结
  • OpenHarmony 实战开发——一文总结ACE代码框架
  • 【数据结构与算法】之堆的应用——堆排序及Top_K问题!
  • 啊哈!算法-第2章-栈、队列、链表
  • 简述 v-if 和 v-show 的区别
  • Linux驱动学习之模块化,参数传递,符号导出
  • RabbitMQ02-RebbitMQ简介及交换器
  • Matlab自学笔记三十:元胞数组的修改、添加、删除和连接
  • 【LeetCode】数组——双指针法
  • react 低代码平台方案汇总
  • oss对象上传文件设置格式
  • 【Linux学习】进程
  • Python数据分析实验四:数据分析综合应用开发
  • 基于51单片机的盆栽自动浇花系统
  • SpirngMVC框架学习笔记(一):SpringMVC基本介绍
  • 实现信号发生控制
  • 二叉树基于队列实现的操作详解
  • LabVIEW常用开发架构有哪些
  • 告别 Dart 中的 Future.wait([])
  • Cisco ASA防火墙抓包命令Capture