问题

894. 所有可能的满二叉树

难度:中等

满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。

返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。

答案中每个树的每个结点必须有 node.val=0

你可以按任何顺序返回树的最终列表。

示例:

输入:7
输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,null,0,0],[0,0,0,0,0,null,null,0,0]]
解释:

提示:

  • 1 <= N <= 20

解答1

分析:

  1. 只有奇数才有解,偶数返回空,因此处理子问题时,只需要处理子树节点总数为奇数的情况;
  2. 依次处理左子树数目为1 3 5 7 9 .... N-2的情况,此时 右子数数目为N-1-1,N-1-3,..., 1;
  3. 递归地将子数挂到root下,直到最终的根节点上;
  4. 注意:退出递归的条件是 N==1时,返回一个值为0的节点 。
vector<TreeNode*> allPossibleFBT(int N)
{vector<TreeNode*> result;if (N%2 == 0) return result;if (N == 1) return {new TreeNode(0)};  for( int i=1; i<N; i+=2){vector<TreeNode*> leftVec = allPossibleFBT(i);vector<TreeNode*> rightVec = allPossibleFBT(N-1-i);for(int j=0; j<leftVec.size(); ++j){for(int k=0; k<rightVec.size(); ++k){TreeNode *root = new TreeNode(0);  //定义一个新的子数的根节点root->left = leftVec[j];root->right = rightVec[k];result.push_back(root);}}}return result;
}

复杂度

时间复杂度:O(2^N)
空间复杂度:O(2^N)

解法2

动态规划的方法:https://leetcode-cn.com/problems/all-possible-full-binary-trees/solution/dong-tai-gui-hua-fa-by-w1sl1y/

待整理?

算法笔记_面试题_10.所有可能的满二叉树相关推荐

  1. 第2章KNN算法笔记_函数classify0

    <机器学习实战>知识点笔记目录 K-近邻算法(KNN)思想: 1,计算未知样本与所有已知样本的距离 2,按照距离递增排序,选前K个样本(K<20) 3,针对K个样本统计各个分类的出现 ...

  2. 回溯 皇后 算法笔记_算法笔记_04_回溯

    设计思想: (1)适用:求解搜索问题和优化问题. (2)搜索空间:数,节点对应部分解向量,可行解在树叶上. (3)搜索过程:采用系统的方法隐含遍历搜索树. (4)搜索策略:深度优先,宽度优先,函数优先 ...

  3. 回溯 皇后 算法笔记_回溯算法:N皇后问题

    给「代码随想录」一个星标吧! ❝ 通知:我将公众号文章和学习相关的资料整理到了Github :https://github.com/youngyangyang04/leetcode-master,方便 ...

  4. 算法笔记_183:历届试题 九宫重排(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成 ...

  5. 算法笔记_172:历届试题 波动数列(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度 ...

  6. 回溯 皇后 算法笔记_什么叫回溯算法,一看就会,一写就废

    什么叫回溯算法 对于回溯算法的定义,百度百科上是这样描述的:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回, ...

  7. 算法笔记_188:历届试题 危险系数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点 ...

  8. 回溯 皇后 算法笔记_算法笔记-回溯法

    (1)0-1背包问题 思路:构造一个二叉树,每个商品都有两种状态,要或者不要.如果要就在这个节点的左枝挂子节点,如果不要就在右节点挂子节点.如果全部商品都分配完状态之后就回溯,回溯到一个还有其他选择的 ...

  9. 算法笔记_图算法专题_关键路径 AOV网和AOE网

    关键路径 1.基本概念 1.AOV网:顶点活动网,是指用顶点表示活动,而用边集表示活动优先关系的有向无环图. 2.AOE网:边活动网,是指用带权的边集表示活动,而用顶点表示事件的有向无环图. AOV网 ...

  10. 叶子结点和分支节点_一棵深度为5的满二叉树有 个分支结点和 个叶子结点

    展开全部 深度为5的完全二叉树的叶子的确是16个,但是分支结点是15个. 二叉树是指树中节点的62616964757a686964616fe58685e5aeb931333433643036度不大于2 ...

最新文章

  1. PCL :K-d tree 2 结构理解
  2. SAP的安装后基本设定
  3. Hibernate之检索方式
  4. MySQL的共享锁和独占锁
  5. [转]Android fragment 重叠问题——通过hide,show方式导致的解决方法
  6. Uva 10217 概率
  7. navicate连接Linux下mysql慢,卡,以及mysql相关查询,授权
  8. 天气预报API使用心得
  9. 博客刚刚开通,纪念一下。
  10. r510服务器开机无显示,联智通达工业主板常见问题之工控电脑开机无显示
  11. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——B题 小宝的幸运数组
  12. php MySQLDB类
  13. 联众创始人鲍岳桥:52 岁还在熬夜写代码! | 人物志
  14. 【单片机】2.5 AT89S52的并行I/O端口
  15. 喜欢看电影来哦!教你如果使用Python网络爬虫爬取豆瓣高分电影!
  16. 数据预处理Part5——样本分布不均衡
  17. 快速应对面试--分门别类--8.二叉树和递归
  18. Problem G: 测量湖泊的平均水深
  19. 嵌入式系统开发笔记2:Linux的主流发行版本
  20. Django数据库学习——定义用户模型(实例)

热门文章

  1. 安全运维 - Linux系统维护
  2. Elasticsearch 7.x Nested 嵌套类型查询 | ES 干货
  3. DHCP原理及报文格式
  4. java Servlet文件拷贝的模板代码
  5. Linux下使用shell脚本远程登录主机(Ubuntu CentOS)
  6. Python Tensorflow下的Word2Vec代码解释
  7. 粉丝关注数据库表的设计
  8. 如何动/静 态 两种方式修改Static控件的颜色
  9. 从Model1,Medel2到显示层框架的出现
  10. JDBC连接效率问题