【Leetcode】【Medium】Binary Tree Zigzag Level Order Traversal
2015-05-21 09:54
525 查看
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:
解题思路:
按层遍历,建立两个栈,一个保存当前结点,一个按照Z型保存下一层结点。
使用一个bool变量来标注每次读取子节点的方向;
代码:
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] ]
解题思路:
按层遍历,建立两个栈,一个保存当前结点,一个按照Z型保存下一层结点。
使用一个bool变量来标注每次读取子节点的方向;
代码:
/** * 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> > ret; stack<TreeNode*> cur_layer; stack<TreeNode*> next_layer; cur_layer.push(root); bool dirt = false; if (!root) return ret; while (!cur_layer.empty()) { vector<int> layer_val; while (!cur_layer.empty()) { TreeNode* node = cur_layer.top(); cur_layer.pop(); layer_val.push_back(node->val); if (dirt) { if (node->right) next_layer.push(node->right); if (node->left) next_layer.push(node->left); } else { if (node->left) next_layer.push(node->left); if (node->right) next_layer.push(node->right); } } ret.push_back(layer_val); swap(cur_layer, next_layer); dirt = !dirt; } return ret; } };
相关文章推荐
- LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
- 【LeetCode】Binary Tree Zigzag Level Order Traversal 二叉树的锯齿形层次遍历 - Medium(LinkedIn)
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树 栈]
- LeetCode刷题(C++)——Binary Tree Zigzag Level Order Traversal(Medium)
- Leetcode:Binary Tree Zigzag Level Order Traversal
- leetCode(23):Binary Tree Zigzag Level Order Traversal
- LEETCODE: Binary Tree Zigzag Level Order Traversal
- leetcode Binary Tree Zigzag Level Order Traversal C++
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal ---LeetCode
- LeetCode:Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- Leetcode148: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode 103:Binary Tree Zigzag Level Order Traversal
- LeetCode 103 Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal(bfs)
- [Leetcode] Binary Tree Level Order Traversal & Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal -- leetcode