剑指offer——34之字打印二叉树
2024-09-06 06:41:07
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
题解:
与上道题没区别,就是在存入数据时,对于奇数行的数据,先反转一下,再存入即可
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>>res;
BFS(pRoot, res);
return res;
}
void BFS(TreeNode *root, vector<vector<int>>&res)
{
if (root == nullptr)return;
queue<TreeNode*>q;
q.push(root);
bool fromLeft = true;
while (!q.empty())
{
queue<TreeNode*>temp;
vector<int>v;
while (!q.empty())
{
TreeNode* p = q.front();
q.pop();
v.push_back(p->val);
if (p->left != nullptr)temp.push(p->left);
if (p->right != nullptr)temp.push(p->right);
}
if(fromLeft)
res.push_back(v);
else
{
reverse(v.begin(), v.end());
res.push_back(v);
}
fromLeft = !fromLeft;
q = temp;
}
}
};
最新文章
- 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
- Java开源库
- 012 VS2013常用快捷键
- hdu----(4301)Divide Chocolate(状态打表)
- wmic
- MySQL分区技术 (一)
- CodeForces 343D 线段树维护dfs序
- hdu 5072 Coprime(同色三角形+容斥)
- TodoList开发笔记 – Part Ⅲ
- 记录一次Session偶尔获取不到的解决过程
- 洛谷P3402 【模板】可持久化并查集(可持久化线段树,线段树)
- JS检测是否是360浏览器
- 02 编程语言、python变量
- 00-JAVA语法基础--课后作业
- 编译Linux-4.15.1内核时遇到:“error : openssl/bio.h :No such file or folder”
- 装饰者模式——Java设计模式
- jquery 实现两级导航菜单
- mysql ssh 端口转发
- OOAD之单例模式Singleton的6种写法
- 【请仔细核对Git地址】关于代码量排名的说明