博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
阅读量:4540 次
发布时间:2019-06-08

本文共 1403 字,大约阅读时间需要 4 分钟。

本题也属于层次遍历的变形,不同之处在于其遍历的方法是交替进行的,形成一个ZigZag的曲线形式,如下:

代码如下:

1 struct TreeNode { 2     int            val; 3     TreeNode*    left; 4     TreeNode*    right; 5     TreeNode(int x): val(x), left(NULL),right(NULL) {} 6 }; 7  8 void Swap(vector
&ivec) 9 {10 int temp = 0;11 int len = ivec.size();12 for (int i = 0; i < len/2; i ++) {13 temp = ivec.at(i);14 ivec.at(i) = ivec.at(len-1-i);15 ivec.at(len-1-i) = temp;16 }17 }18 19 vector
> zigzagLevelOrder(TreeNode *root)20 {21 vector
> tree_vector;22 vector
ivec;23 queue
tree_queue;24 if (NULL == root)25 return tree_vector;26 27 tree_queue.push(root);28 tree_queue.push(NULL);29 int nLevelCount = 1;30 while (true) {31 TreeNode *pTemp = tree_queue.front();32 tree_queue.pop();33 if (pTemp == NULL) {34 if (nLevelCount%2 == 0) { //if the num of level is odd, swap the ivec;35 Swap(ivec);36 }37 tree_vector.push_back(ivec);38 ivec.clear();39 if (tree_queue.empty())40 break;41 tree_queue.push(NULL);42 nLevelCount ++;43 }44 else {45 ivec.push_back(pTemp->val);46 if (pTemp->left)47 tree_queue.push(pTemp->left);48 if (pTemp->right)49 tree_queue.push(pTemp->right);50 }51 }52 return tree_vector;53 }

 

转载于:https://www.cnblogs.com/bakari/p/4126666.html

你可能感兴趣的文章
[Win8.1系统]双系统
查看>>
HDU 3899 树形DP
查看>>
获取当前页面url信息
查看>>
Java容器类源码分析前言之集合框架结构(基于JDK8)
查看>>
linux下C/C++程序的内存布局
查看>>
单词计数问题
查看>>
php 魔术方法 __autoload()
查看>>
js div拖动动画运行轨迹效果
查看>>
Recipe 1.9. Processing a String One Word at a Time
查看>>
Linux 下查看系统是32位 还是64 位的方法
查看>>
MySQL 引擎 和 InnoDB并发控制 简介
查看>>
Dave Python 练习二
查看>>
第二章 第五节 获取帮助
查看>>
关于源代码及其管理工具的总结
查看>>
此文对你人生会有莫大好处的,建议永久保存 2013-07-26 11:04 476人阅读 评论(0) ...
查看>>
JQuery怎样返回前一页
查看>>
Best Time to Buy and Sell Stock
查看>>
Web服务器的原理
查看>>
记录ok6410 jlink 命令行调试uboot
查看>>
ASP.net 内置对象
查看>>