[leetcode] 103. Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:美工这个工作发展前景 编辑:程序博客网 时间:2024/06/05 06:00
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,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7]]
解法一:
加一个flag变量记录是否reverse。
/** * 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; if(!root) return res; queue<TreeNode*> q; q.push(root); bool reverse_flag = false; while(!q.empty()){ int sz = q.size(); vector<int> level; for(int i=0; i<sz; i++){ TreeNode* tmp = q.front(); q.pop(); level.push_back(tmp->val); if(tmp->left) q.push(tmp->left); if(tmp->right) q.push(tmp->right); } if(reverse_flag){ reverse(level.begin(),level.end()); } res.push_back(level); reverse_flag = !reverse_flag; } return res; }};
/** * 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; if(!root) return res; stack<TreeNode*> s1; // left->right; stack<TreeNode*> s2; // right->left; s1.push(root); while(!s1.empty() || !s2.empty()){ vector<int> out; while(!s1.empty()){ TreeNode* n = s1.top(); s1.pop(); out.push_back(n->val); if(n->left) s2.push(n->left); if(n->right) s2.push(n->right); } if (!out.empty()) res.push_back(out); out.clear(); while(!s2.empty()){ TreeNode* n = s2.top(); s2.pop(); out.push_back(n->val); if(n->right) s1.push(n->right); if(n->left) s1.push(n->left); } if (!out.empty()) res.push_back(out); } return res; }};
0 0
- LeetCode: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- [Leetcode]Binary Tree Zigzag Level Order Traversal
- [leetcode]Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal
- [leetcode] Binary Tree Zigzag Level Order Traversal
- LeetCode - Binary Tree Zigzag Level Order Traversal
- LeetCode:Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- HTML+CSS基础课程之使用提交按钮,提交数据
- 最小生成树-Kruskal算法(模板)
- 如何判断是微信内置浏览器或者支付宝内置浏览器
- 常用正则表达式
- mybatis查询字段为空返回另一个字段的值
- [leetcode] 103. Binary Tree Zigzag Level Order Traversal
- Map与JavaBean互转原理(内省机制)
- 求n^k的前几位数和后几位数
- mipi 调试经验
- POJ 1050.To the Max
- 时区设置
- Visual Studio 2015简体中文企业版/专业版下载+有效激活密钥
- rabbitmq 路由 java实现
- SDUT OJ 3378 数据结构实验之查找六:顺序查找