LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
2024-10-19 06:15:35
本题也属于层次遍历的变形,不同之处在于其遍历的方法是交替进行的,形成一个ZigZag的曲线形式,如下:
代码如下:
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x): val(x), left(NULL),right(NULL) {}
}; void Swap(vector<int> &ivec)
{
int temp = ;
int len = ivec.size();
for (int i = ; i < len/; i ++) {
temp = ivec.at(i);
ivec.at(i) = ivec.at(len--i);
ivec.at(len--i) = temp;
}
} vector<vector <int> > zigzagLevelOrder(TreeNode *root)
{
vector<vector<int> > tree_vector;
vector<int> ivec;
queue<TreeNode *> tree_queue;
if (NULL == root)
return tree_vector; tree_queue.push(root);
tree_queue.push(NULL);
int nLevelCount = ;
while (true) {
TreeNode *pTemp = tree_queue.front();
tree_queue.pop();
if (pTemp == NULL) {
if (nLevelCount% == ) { //if the num of level is odd, swap the ivec;
Swap(ivec);
}
tree_vector.push_back(ivec);
ivec.clear();
if (tree_queue.empty())
break;
tree_queue.push(NULL);
nLevelCount ++;
}
else {
ivec.push_back(pTemp->val);
if (pTemp->left)
tree_queue.push(pTemp->left);
if (pTemp->right)
tree_queue.push(pTemp->right);
}
}
return tree_vector;
}
最新文章
- hibernate笔记--基于主键的单(双)向的一对一映射关系
- Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
- ASP.NET MVC读取XML并使用ViewData显示
- bbed的使用--查看数据文件信息 &; sid信息
- Hadoop c++开发
- node.js在windows下的学习笔记(9)---文件I/O模块
- 页面上动态编译及执行java代码
- pywin32 安装错误 ImportError: DLL load failed: 不是有效的 Win32 应用程序
- C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
- Asp.net 插入或更改查询字符串
- zend guard Optimizer
- extjs最普通的grid
- Java 异常处理笔记
- Golang开发者常见的坑
- Web Service进阶(七)浅谈SOAP Webservice和RESTful Webservice
- BZOJ 1706
- vue里的渲染以及computed的好处
- spring学习(03)之bean实例化的三种方式
- thinkphp3.2 实现二级导航和高亮显示
- asp.net web 通过IHttpAsyncHandler接口进行消息推送