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

本文共 1297 字,大约阅读时间需要 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 }

 

转载地址:http://ebzxl.baihongyu.com/

你可能感兴趣的文章
【KnewOne Talk】郭宇:只为美好体验
查看>>
人脸识别登录:加强系统认证
查看>>
阿里云提示漏洞:destoon变量覆盖导致延时注入
查看>>
Nacos 计划发布v0.2版本,进一步融合Dubbo和SpringCloud生态
查看>>
Spring Boot 2.2 首个里程碑版本 M1 发布
查看>>
练就Java24章真经—你所不知道的工厂方法
查看>>
极路由通过SSH添加静态路由表之后无法跳转的问题
查看>>
Apache Kylin v3.0.0-alpha 正式发布
查看>>
[AlwaysOn Availability Groups]AlwaysOn健康诊断日志
查看>>
数据建模大数据就业挑战月薪30K
查看>>
python面试题
查看>>
intro Two-Phase Commit(2PC)
查看>>
用AutoIt自动安装和卸载程序
查看>>
刷新网卡ip
查看>>
移动构造函数和移动赋值函数
查看>>
supervisor的使用简介
查看>>
深入浅出之-route命令实战使用指南
查看>>
反掩码详解
查看>>
转: ㊣华哥日记㊣ 12.14-如何去了解更多的东西
查看>>
centos7中没有安装ifconfig命令的解决办法
查看>>