leetcode 894. 所有可能的完整二叉树
发布日期:2021-06-21 09:00:08
浏览次数:3
分类:技术文章
本文共 1153 字,大约阅读时间需要 3 分钟。
题目:
完整二叉树是一类二叉树,其中每个结点恰好有 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
思路:
中等题,其实思路不难,对于我这种手残选手而言,难的是coding。一看就是递归解决,并且一个端点只允许两种情况,无节点或者两个节点。但是其返回值是头结点,用简单的递归是返回不了头结点的,因为递归总是从上而下的,递归到最后就是子节点的。这题需要在返回的时候声明一个节点作为头结点root,然后左右递归的子返回值作为其子节点,我们就可以返回这个root了。
注意点:
递归的返回值,需要自行声明一个新的节点作为这个子树的头结点。
代码:
vectorallPossibleFBT(int N) { cout< < ve; if(N==0)return ve; if(N==1){ TreeNode* ans = new TreeNode(0); ve.push_back(ans); return ve; } N = N-1; for(int i=1;i<=N;i+=2){ vector L = allPossibleFBT(i); vector R = allPossibleFBT(N-i); for(TreeNode* i : L){ for(TreeNode* j : R){ TreeNode* root = new TreeNode(0); root->left = i; root->right = j; ve.push_back(root); } } }return ve;}
转载地址:https://blog.csdn.net/lwgkzl/article/details/82109814 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月23日 03时47分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python初学者指南:关于变量,你了解这些就够了!
2019-04-28
Python初学者指南:输入输出,如此简单!
2019-04-28
python初学者指南:条件语句、循环语句,你学会了吗?
2019-04-28
python初学者指南:繁杂的字符串
2019-04-28
python初学者指南:列表
2019-04-28
python初学者指南:元祖与字典
2019-04-28
python初学者指南:列表,元祖,字典,集合的使用场景对比及操作异同点分析
2019-04-28
博客开篇:为什么开始?
2019-04-28
《数据库系统概论》第一章 绪论
2019-04-28
第一讲 Android概述
2019-04-28
第二讲 Activity详解
2019-04-28
变量命名规范,看这个就够了
2019-04-28
第三讲 UI控件使用
2019-04-28
第四讲 布局管理器
2019-04-28
利用Dism修复系统步骤,以及dism找不到源文件解决方案
2019-04-28
AnswerGame答案解析
2019-04-28
《大话数据结构》读书笔记——第1章 数据结构绪论
2019-04-28
《大话数据结构》读书笔记——第2章 算法
2019-04-28
ThinkPad Tablet2升级Windows10(各种故障及解决方案)
2019-04-28
《大话数据结构》读书笔记——第3章 线性表 顺序存储结构知识点及代码实现【带注释】
2019-04-28