Leetcode#95 Unique Binary Search Trees II
Unique Binary Search Trees(参见这篇文章)的升级版
做题的时候我在想,这要是把每个二叉树都独立创建一份得多麻烦啊,试试能不能共用"公共部分",试了一下,果然可以,哈哈。
trees[i][j]表示数字i到j所能组成的所有二叉树的根节点
代码:
1 vector<TreeNode *> generateTrees(int n) { 2 if (n < 1) 3 return vector<TreeNode *>(1, NULL); 4 5 vector<vector<vector<TreeNode *> > > trees(n + 1, vector<vector<TreeNode *> >(n + 1, vector<TreeNode *>())); 6 7 for (int len = 1; len <= n; len++) { 8 for (int i = 1, j = i + len - 1; j <= n; i++, j++) { 9 for (int k = i; k <= j; k++) { 10 vector<TreeNode *> lefts = k == i ? vector<TreeNode *>(1, NULL) : trees[i][k - 1]; 11 vector<TreeNode *> rights = k == j ? vector<TreeNode *>(1, NULL) : trees[k + 1][j]; 12 for (auto l : lefts) { 13 for (auto r : rights) { 14 TreeNode *node = new TreeNode(k); 15 node->left = l; 16 node->right = r; 17 trees[i][j].push_back(node); 18 } 19 } 20 } 21 } 22 } 23 24 return trees[1][n]; 25 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥