news 2026/3/22 19:11:12

leetcode 894. All Possible Full Binary Trees 所有可能的真二叉树-耗时100

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 894. All Possible Full Binary Trees 所有可能的真二叉树-耗时100

Problem: 894. All Possible Full Binary Trees 所有可能的真二叉树

耗时100%

1和3的答案可以手写出来,5是1+(1+3)或者1+(3+1),7是1+(1+5)或者1+(5+1)或者1+(3+3),第一个1是根节点,括号内分别是左节点和右节点,然后(1+5)其中1一种情况5两种情况,所以7共2+2+1=5种情况,9可以写成1+(1+7)、1+(7+1)、1+(2+5)等

所以可以使用记忆化搜索,依次组合起来就可以得到答案,但是需要复制一遍二叉树

Code

class Solution { public: vector<TreeNode*> ret; unordered_map<int, vector<TreeNode*>> ump; TreeNode* copy(TreeNode* root, TreeNode* rt) { if(root==nullptr) return nullptr; if(rt==nullptr) { rt = new TreeNode(0); } rt->left = copy(root->left, rt->left); rt->right = copy(root->right, rt->right); return rt; } // TreeNode* rootroot; // void dfs(TreeNode* root, int n) { // if(n == 0) { // TreeNode* rt = nullptr; // rt = copy(rootroot, rt); // ret.push_back(rt); // delete root->left; // delete root->right; // root->left = nullptr; // root->right = nullptr; // return; // } // root->left = new TreeNode(0); // root->right = new TreeNode(0); // dfs(root->left, n - 2); // dfs(root->right, n - 2); // // delete root->left; // // root->left = nullptr; // // delete root->right; // // root->right = nullptr; // // dfs(root->right, n - 2); // } vector<TreeNode*> allPossibleFBT(int n) { if((n&1)==0) return {}; TreeNode* root; root = new TreeNode(0); if(n==1) { return {root}; }; TreeNode* rt = nullptr; rt = copy(root, rt); ump[1] = {rt}; root->left = new TreeNode(0); root->right = new TreeNode(0); rt = nullptr; rt = copy(root, rt); ump[3] = {rt}; if(n==3) { return ump[3]; } for(int k = 5; k <= n; k += 2) { for(int i = 1; i <= (k-1)/2; i+=2) { for(TreeNode* l : ump[i]) { for(TreeNode* r : ump[k - i - 1]) { if(2*i!=k-1) { root = new TreeNode(0); root->left = l; root->right = r; // rt = nullptr; // rt = copy(root, rt); ump[k].push_back(root); root = new TreeNode(0); root->left = r; root->right = l; // rt = nullptr; // rt = copy(root, rt); ump[k].push_back(root); } else { root = new TreeNode(0); root->left = l; root->right = r; // rt = nullptr; // rt = copy(root, rt); ump[k].push_back(root); } } } } } // dfs(root, n - 1); return ump[n]; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 8:05:01

Enhancing Multi-Image Understanding through Delimiter Token Scaling

Enhancing Multi-Image Understanding through Delimiter Token Scaling Authors: Minyoung Lee, Yeji Park, Dongjun Hwang, Yejin Kim, Seong Joon Oh, Junsuk Choe Deep-Dive Summary: 通过缩放分隔符标记增强多图像理解 Minyoung Lee 1 ^1 1, Yejir Park 1 ^1 1, Don…

作者头像 李华
网站建设 2026/3/18 9:41:48

AIGS赋能Java企业:从范式革新到架构支撑的落地路径

在人工智能技术的演进历程中&#xff0c;从AIGC&#xff08;人工智能生成内容&#xff09;到AIGS&#xff08;人工智能生成服务&#xff09;的跨越&#xff0c;标志着AI技术从“内容辅助”走向“系统重塑”。对于以Java技术栈为核心的企业而言&#xff0c;如何将AIGS能力融入现…

作者头像 李华
网站建设 2026/3/22 8:45:51

苹果质检分割数据集labelme格式5842张8类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数)&#xff1a;5842标注数量(json文件个数)&#xff1a;5842标注类别数&#xff1a;8标注类别名称:["Apple","Leg","Receptacle&q…

作者头像 李华
网站建设 2026/3/21 13:26:46

实证分析还在死磕 Stata?虎贲等考 AI:零代码搞定顶刊级数据分析

“Stata 代码报错 3 天没头绪”“面板数据模型选错&#xff0c;整篇实证推倒重来”“回归结果出来了&#xff0c;却不会用学术语言解读”—— 实证研究中&#xff0c;数据分析往往成为科研人的 “拦路虎”。传统数据分析工具门槛高&#xff0c;需精通编程和计量方法&#xff0c…

作者头像 李华
网站建设 2026/3/18 9:41:48

虎贲等考 AI:重构学术写作生态,全链智能赋能论文创作新体验

在学术探索的道路上&#xff0c;每一位科研人、学子都曾面临这样的困境&#xff1a;选题迷茫不知方向&#xff0c;文献浩如烟海难以筛选&#xff0c;数据图表虚假难辨&#xff0c;实证分析无从下手&#xff0c;查重降重陷入机械修改的循环。虎贲等考 AI 智能写作平台&#xff0…

作者头像 李华
网站建设 2026/3/21 1:51:27

aiohttp

1. aiohttp 是什么可以把它理解为一个专门用于处理网络请求和响应的工具包&#xff0c;但它有一个核心特点&#xff1a;异步。想象一个传统的银行柜台&#xff0c;只有一个窗口&#xff0c;柜员必须彻底办完一位顾客的所有业务&#xff08;比如存款、转账、咨询&#xff09;才能…

作者头像 李华