LeetCode *** 103. Binary Tree Zigzag Level Order Traversal
2016-04-19 09:21
337 查看
题目:
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree
return its zigzag level order traversal as:
分析:
用两个栈。
代码:
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree
{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7] ]
分析:
用两个栈。
代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>> res; vector<int> record; if(root==NULL)return res; stack<TreeNode*> s1,s2; bool f1=true,f2=false; s1.push(root); while(!s1.empty()||!s2.empty()){ if(f1&&!s1.empty()){ TreeNode* tmp=s1.top(); s1.pop(); record.push_back(tmp->val); if(tmp->left)s2.push(tmp->left); if(tmp->right)s2.push(tmp->right); if(s1.empty()){ f1=false; f2=true; res.push_back(record); record.erase(record.begin(),record.end()); } }else if(f2&&!s2.empty()){ TreeNode* tmp=s2.top(); s2.pop(); record.push_back(tmp->val); if(tmp->right)s1.push(tmp->right); if(tmp->left)s1.push(tmp->left); if(s2.empty()){ f2=false; f1=true; res.push_back(record); record.erase(record.begin(),record.end()); } } } return res; } };
相关文章推荐
- 66、Integer.valueof(String)
- MATLAB区域标记提取指定编号区域
- Hive学习三
- 关于struts2中action请求会执行两次的问题
- 高斯金字塔
- 深入分析 Java 中的中文编码问题
- 数据库连接
- 结对编程——关于Fault、Error、Failure程序设计
- HelloChart--PieChartView(饼图)
- Linux无需开发底层驱动,从应用层获取GPIO中断
- HelloChart--ColumnChartView(柱形图)
- android开发游记:meterial design 使用circularReveal仿哔哩哔哩(bilibili)搜索框动画
- 体感设备
- Max 模型背面边面的不显示问题解决方案
- [初识总结]开源即时通讯IM Openfire+spark and (comet实现)
- java Runtime类
- 房坑
- Spring MVC 注解开发详解
- 去掉navbar或者tabbar的预留间距
- Enum , Enum Class ?