Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:用友固定资产登记软件 编辑:程序博客网 时间:2024/04/27 19:15
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]]
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
用两个栈实现
/** * 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> > ret; stack<TreeNode*> currentLevel; stack<TreeNode*> nextLevel; int flag = 1; if(root == NULL) return ret; currentLevel.push(root); stack<TreeNode*> stack ; while(1){ vector<int> vec; while(!currentLevel.empty()){ TreeNode* current = currentLevel.top(); currentLevel.pop(); vec.push_back(current->val); if(flag){ if(current->left != NULL) nextLevel.push(current->left); if(current->right != NULL) nextLevel.push(current->right); }else{ if(current->right != NULL) nextLevel.push(current->right); if(current->left != NULL) nextLevel.push(current->left); } } flag = 1- flag; ret.push_back(vec); if(nextLevel.empty()) break; stack = currentLevel; currentLevel = nextLevel; nextLevel = stack; } return ret; }};
28 milli secs
- 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
- Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- 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
- Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- 营造高效项目团队的常用举措
- 程序内存区域浅析
- 关于socket通信时传输对象
- ZOJ 3598 Spherical Triangle
- 【设计模式】之三Observer
- Binary Tree Zigzag Level Order Traversal
- POJ1992(Jack)
- 内存使用
- opencv 笔记01Core_Mat
- 分数类
- 文件系统的制作
- ajax get 到servlet 解决utf-8中文乱码
- CommandBehavior.CloseConnection有何作用
- 朴素的dijkstra模板