894-- 所有可能的满二叉树

思路:
这道题,要求满二叉树的所有可能,采用递归比较简单。
递归流程:
根节点占一个节点,然后就是考虑左右子树的可能。首先根据满二叉树的性质确定递归中断的条件:不能是偶数节点;节点数为1,就只有根节点。不需要在递归下去。
左右子树的可能通过递归求得,最后就是将左右子树和根节点组合。
优化:将前面各种节点的结果保存,后续不同重复递归计算。

 //这个题考虑递归//这个函数意思:返回n个节点构成符合条件的树列表vector<TreeNode*> allPossibleFBT(int N) {//条件判断//满二叉树必然节点数为奇数vector<TreeNode*> res;if(N & 1 == 0) {//偶数返回空return res;}if(N == 1){//只有一个点res.push_back(new TreeNode(0));return res;}//递归找左右子树//左子树的节点数为奇数, 1,3,5......N-2  ,根节点和右节点最少要2个节点for(int i = 1; i < N-1; i+=2){vector<TreeNode*> left = allPossibleFBT(i);vector<TreeNode*> right = allPossibleFBT(N-1-i);//将左右子树进行组合for(int m = 0; m < left.size(); ++m){for(int n = 0; n < right.size(); ++n){TreeNode*root = new TreeNode(0);root->left = left[m];root->right = right[n];res.push_back(root);}}}return res;}

leetcode 题库894-- 所有可能的满二叉树相关推荐

  1. leetcode 题库1028--从先序遍历还原二叉树

    从先序遍历还原二叉树 我们从二叉树的根节点 root 开始进行深度优先搜索. 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值.(如果节点的深度为 D,则其 ...

  2. LeetCode题库第867题 转置矩阵

    LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...

  3. LeetCode题库第888题 公平的糖果棒交换

    LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...

  4. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

  5. LeetCode题库第1题 两数之和

    两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...

  6. LeetCode题库整理【Java】—— 3 无重复字符的最长子串

    LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...

  7. LeetCode题库整理【Java】—— 2 两数相加

    LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...

  8. LeetCode题库整理【Java】—— 7整数反转

    LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...

  9. LeetCode题库整理【Java】—— 1两数之和

    LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...

  10. leetcode题库:4.两个排序数组的中位数

    题目: /**   *leetcode题库:4. 求两个排序数组的中位数  *  *  给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 .  *  请找出这两个有序数组的中位数. ...

最新文章

  1. R语言ggplot2可视化:绘制堆叠的密度图(Stacked Area Chart)
  2. keil mdk5安装
  3. linux命令在线查
  4. 类方法与静态方法的进一步理解
  5. 机器学习-转换器与估计器05
  6. python_GUI操作(鼠标、键盘)
  7. 我用 Python 集齐了五福
  8. 一行一个链接代码_AI最优论文+代码查找神器:966个ML任务、8500+论文任你选
  9. 《UG NX8.0中文版完全自学手册》一2.4 布局
  10. 机器学习-吴恩达-笔记-11-异常检测
  11. Android 使用 TableLayout 布局拉伸宽度
  12. MVC4使用SignalR出现$.connection is undefined错误备忘
  13. 【转】Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
  14. ElasticSearch SQL 数据类型
  15. plc输入/输出模块的选择
  16. 敏感词过滤的算法原理之 Aho-Corasick 算法
  17. poj 3295 Tautology【离散数学之重言式】
  18. tomcat 启动显示日志级别,以及SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder.错误
  19. 张钹院士:人工智能技术已进入第三代
  20. java基础知识点整理大全

热门文章

  1. jquery的ajax查询数据库,jquery中使用ajax获取远程页面信息
  2. 启动rrt什么意思_面试官:你来说一下springboot启动时的一个自动装配过程吧!...
  3. python 最小二乘法三维坐标拟合平面_【MQ笔记】超简单的最小二乘法拟合平面(Python)...
  4. java定时器注解加效验_Java中定时器的使用之二(springboot–@Scheduled注解)
  5. java 开发环境配置文件_Java 开发环境配置
  6. mysql float64_'numpy.float64'对象没有属性'translate'在Python中插入值到Mysql
  7. LeetCode Week 5:第 41 ~ 50 题
  8. PyTorch报错“/.../Loss.cu: ... [59,0,0] Assertion input_val >= zero input_val <= one failed.”
  9. 如何下载B站视频到本地?
  10. XML 与动态添加控件