算法笔记_面试题_10.所有可能的满二叉树
问题
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 3 5 7 9 .... N-2的情况,此时 右子数数目为N-1-1,N-1-3,..., 1;
- 递归地将子数挂到root下,直到最终的根节点上;
- 注意:退出递归的条件是 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.所有可能的满二叉树相关推荐
- 第2章KNN算法笔记_函数classify0
<机器学习实战>知识点笔记目录 K-近邻算法(KNN)思想: 1,计算未知样本与所有已知样本的距离 2,按照距离递增排序,选前K个样本(K<20) 3,针对K个样本统计各个分类的出现 ...
- 回溯 皇后 算法笔记_算法笔记_04_回溯
设计思想: (1)适用:求解搜索问题和优化问题. (2)搜索空间:数,节点对应部分解向量,可行解在树叶上. (3)搜索过程:采用系统的方法隐含遍历搜索树. (4)搜索策略:深度优先,宽度优先,函数优先 ...
- 回溯 皇后 算法笔记_回溯算法:N皇后问题
给「代码随想录」一个星标吧! ❝ 通知:我将公众号文章和学习相关的资料整理到了Github :https://github.com/youngyangyang04/leetcode-master,方便 ...
- 算法笔记_183:历届试题 九宫重排(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成 ...
- 算法笔记_172:历届试题 波动数列(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度 ...
- 回溯 皇后 算法笔记_什么叫回溯算法,一看就会,一写就废
什么叫回溯算法 对于回溯算法的定义,百度百科上是这样描述的:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回, ...
- 算法笔记_188:历届试题 危险系数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点 ...
- 回溯 皇后 算法笔记_算法笔记-回溯法
(1)0-1背包问题 思路:构造一个二叉树,每个商品都有两种状态,要或者不要.如果要就在这个节点的左枝挂子节点,如果不要就在右节点挂子节点.如果全部商品都分配完状态之后就回溯,回溯到一个还有其他选择的 ...
- 算法笔记_图算法专题_关键路径 AOV网和AOE网
关键路径 1.基本概念 1.AOV网:顶点活动网,是指用顶点表示活动,而用边集表示活动优先关系的有向无环图. 2.AOE网:边活动网,是指用带权的边集表示活动,而用顶点表示事件的有向无环图. AOV网 ...
- 叶子结点和分支节点_一棵深度为5的满二叉树有 个分支结点和 个叶子结点
展开全部 深度为5的完全二叉树的叶子的确是16个,但是分支结点是15个. 二叉树是指树中节点的62616964757a686964616fe58685e5aeb931333433643036度不大于2 ...
最新文章
- PCL :K-d tree 2 结构理解
- SAP的安装后基本设定
- Hibernate之检索方式
- MySQL的共享锁和独占锁
- [转]Android fragment 重叠问题——通过hide,show方式导致的解决方法
- Uva 10217 概率
- navicate连接Linux下mysql慢,卡,以及mysql相关查询,授权
- 天气预报API使用心得
- 博客刚刚开通,纪念一下。
- r510服务器开机无显示,联智通达工业主板常见问题之工控电脑开机无显示
- 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——B题 小宝的幸运数组
- php MySQLDB类
- 联众创始人鲍岳桥:52 岁还在熬夜写代码! | 人物志
- 【单片机】2.5 AT89S52的并行I/O端口
- 喜欢看电影来哦!教你如果使用Python网络爬虫爬取豆瓣高分电影!
- 数据预处理Part5——样本分布不均衡
- 快速应对面试--分门别类--8.二叉树和递归
- Problem G: 测量湖泊的平均水深
- 嵌入式系统开发笔记2:Linux的主流发行版本
- Django数据库学习——定义用户模型(实例)