LeetCode 103: Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:mac分区 编辑:程序博客网 时间:2024/05/22 04:02
Difficulty: 4
Frequency: 3
Problem:
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]]
Solution:
/** * Definition for binary tree * 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) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<vector<int> > answer; if (!root) return answer; list <TreeNode *> level_list[2]; vector<int> v_level; list <TreeNode *>::iterator iter; int i_current = 0, i_next = 1; bool b_forward = true; level_list[0].push_back(root); while(!level_list[i_current].empty()) { v_level.clear(); if (b_forward) { while(!level_list[i_current].empty()) { TreeNode * node = level_list[i_current].front(); if (node->left) level_list[i_next].push_back(node->left); if (node->right) level_list[i_next].push_back(node->right); v_level.push_back(node->val); level_list[i_current].pop_front(); } answer.push_back(v_level); i_current = i_next; i_next ^= 1; b_forward = !b_forward; } else { while(!level_list[i_current].empty()) { TreeNode * node = level_list[i_current].back(); if (node->right) level_list[i_next].push_front(node->right); if (node->left) level_list[i_next].push_front(node->left); v_level.push_back(node->val); level_list[i_current].pop_back(); } answer.push_back(v_level); i_current = i_next; i_next ^=1; b_forward = !b_forward; } } return answer; }};
Notes:
- 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
- 深入理解C++的动态绑定和静态绑定
- jQuery对象获取
- Spring MVC注解实例
- java中静态代码块的用法 static用法详解
- jQuery的attr()方法
- LeetCode 103: Binary Tree Zigzag Level Order Traversal
- hdu4031(线段树+区间更新)
- 一步步学算法(算法题解)---2
- 关于sort 函数小结
- 开发新系统的步骤
- Thirteen equals one
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- 【趣味算法】三色旗问题:传统解法及基于队列的更好性能解法
- MyEclipse 简单优化整理