二叉树展开为二叉树链表(右子节点)
原题在这里:
概述题意,给定一个二叉树,要求转换为右子节点连接起来的单链表。
analyse:
没啥好说的,很普通的转换,写了递归和迭代两个版本。
code:
class Solution { TreeNode *dfs(TreeNode *n) { if (!n) return nullptr; TreeNode *now = n; // now表示n所在树的先序遍历末节点 if (n->left && n->right) { now = dfs(n->left); //左子节点末端 now->right = n->right; //末端连接 now = dfs(n->right); //末端转移 } else if (n->left) now = dfs(n->left); else if (n->right) now = dfs(n->right); if (n->left) n->right = n->left; //当前节点构造 n->left = nullptr; return now; //返回末端节点 } public: void flatten(TreeNode *root) { //dfs(root); TreeNode *now = root; while (now) { if (now->left) { auto next = now->left; auto pre = next; while (pre->right) pre = pre->right; pre->right = now->right; now->left = nullptr; now->right = next; } now = now->right; } } };
【Over】
搜索
复制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!