剑指offer 把二叉树打印成多行
题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
代码:
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 }; 10 */ 11 class Solution { 12 public: 13 vector<vector<int> > Print(TreeNode* pRoot) { 14 vector<vector<int> > LIST; 15 if(pRoot == NULL) return LIST; 16 queue<TreeNode*> q1; 17 queue<TreeNode*> q2; 18 vector<int> list; 19 q1.push(pRoot); 20 int pattern = 1; 21 list.push_back(pRoot->val); 22 LIST.push_back(list); 23 list.clear(); 24 while(!(q1.empty() && q2.empty())) { 25 TreeNode* temp; 26 if(pattern == 1){ 27 temp = q1.front(); 28 q1.pop(); 29 if(temp->left){ 30 q2.push(temp->left); 31 list.push_back(temp->left->val); 32 } 33 if(temp->right){ 34 q2.push(temp->right); 35 list.push_back(temp->right->val); 36 } 37 if(q1.empty() && !list.empty()){ 38 LIST.push_back(list); 39 list.clear(); 40 pattern = 2; 41 } 42 } 43 else { 44 temp = q2.front(); 45 q2.pop(); 46 if(temp->left){ 47 q1.push(temp->left); 48 list.push_back(temp->left->val); 49 } 50 if(temp->right){ 51 q1.push(temp->right); 52 list.push_back(temp->right->val); 53 } 54 if(q2.empty() && !list.empty()){ 55 LIST.push_back(list); 56 list.clear(); 57 pattern = 1; 58 } 59 } 60 } 61 return LIST; 62 } 63 };
我的笔记:
利用两个队列完成层序遍历即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具