本题也属于层次遍历的变形,不同之处在于其遍历的方法是交替进行的,形成一个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;
}

最新文章

  1. hibernate笔记--基于主键的单(双)向的一对一映射关系
  2. Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
  3. ASP.NET MVC读取XML并使用ViewData显示
  4. bbed的使用--查看数据文件信息 &amp; sid信息
  5. Hadoop c++开发
  6. node.js在windows下的学习笔记(9)---文件I/O模块
  7. 页面上动态编译及执行java代码
  8. pywin32 安装错误 ImportError: DLL load failed: 不是有效的 Win32 应用程序
  9. C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
  10. Asp.net 插入或更改查询字符串
  11. zend guard Optimizer
  12. extjs最普通的grid
  13. Java 异常处理笔记
  14. Golang开发者常见的坑
  15. Web Service进阶(七)浅谈SOAP Webservice和RESTful Webservice
  16. BZOJ 1706
  17. vue里的渲染以及computed的好处
  18. spring学习(03)之bean实例化的三种方式
  19. thinkphp3.2 实现二级导航和高亮显示
  20. asp.net web 通过IHttpAsyncHandler接口进行消息推送

热门文章

  1. cleos
  2. properties文件读写工具类
  3. 用swift写的一款小游戏,模仿的僵尸危机
  4. Pycharm中选择Python解释器
  5. PHP并发之CURL
  6. centos7 下安装pycharm
  7. Eigen使用矩阵作为函数参数
  8. gdb调试技巧 找到php执行进程当前执行的代码
  9. 小程序css--view标签下英文不换行,中文会自动换行
  10. js控制style样式