[Leetcode] #103 Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:杨文理知乎 编辑:程序博客网 时间:2024/05/18 07:32
Discription:
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]]
Solution:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {vector<vector<int>> result;queue<TreeNode*> que;if (!root) return result;que.push(root);bool isTrue = false;while (!que.empty()){int size = que.size();vector<int> row;while (size-- > 0){TreeNode *temp = que.front();que.pop();row.push_back(temp->val);if (temp->left)que.push(temp->left);if (temp->right)que.push(temp->right);}if (isTrue)reverse(row.begin(), row.end());isTrue = !isTrue;result.push_back(row);}return result;}
vector<vector<int> > zigzagLevelOrder(TreeNode* root) {vector<vector<int> > result;queue<TreeNode*> nodesQueue;if (!root) return result;nodesQueue.push(root);bool leftToRight = true;while (!nodesQueue.empty()) {int size = nodesQueue.size();vector<int> row(size);for (int i = 0; i < size; i++) {TreeNode* node = nodesQueue.front();nodesQueue.pop();int index = (leftToRight) ? i : (size - 1 - i);row[index] = node->val;if (node->left) {nodesQueue.push(node->left);}if (node->right) {nodesQueue.push(node->right);}}leftToRight = !leftToRight;result.push_back(row);}return result;}
附:Leetcode源代码见我的GitHub
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
- 初识三层
- Split—鸥哨繁殖
- Oracle数据库的整理——1常用指令
- 硬件乘法器的意义何在?乘法直接乘不就可以了吗。我verilog里编写a*b即可,为什么要移位相加去乘?
- 贪心:HDU - 2037 题解
- [Leetcode] #103 Binary Tree Zigzag Level Order Traversal
- 【转载】Annotation怎么用
- HDU - 1114----Piggy-Bank
- JavaSE 学习参考:循环语句中的break应用举例
- 我的科研生活2017-2-11
- Ceph QoS 初探(下)
- 很想问问自己,这些年学的是什么
- NYOJ 252 01串
- QTableWidget与QTableView的区别