Leetcode:Binary Tree Zigzag Level Order Traversal
2014-06-13 21:37
375 查看
Description:
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:
分析: 题目要给出二叉树的zigzag Z型遍历,其本质应该是二叉树的宽搜,然后根据层数来确定每一层是否翻转。
这主要点就在于宽搜时需要知道当前在第几层,所以需要两个queue来做。 这个是一个常用技巧
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] ]
分析: 题目要给出二叉树的zigzag Z型遍历,其本质应该是二叉树的宽搜,然后根据层数来确定每一层是否翻转。
这主要点就在于宽搜时需要知道当前在第几层,所以需要两个queue来做。 这个是一个常用技巧
/** * 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) { vector<vector<int> >result; if(root==NULL) return result; queue<TreeNode* > q,qadd; q.push(root); vector<int> level; int nowlevel = 1; while(!q.empty()) { TreeNode *one = q.front(); level.push_back(one->val); if(one->left!=NULL) qadd.push(one->left); if(one->right!=NULL) qadd.push(one->right); q.pop(); if(q.empty()) { if(nowlevel%2==0) reverse(level.begin(),level.end()); result.push_back(level); level.clear(); nowlevel++; swap(q,qadd); } } return result; } };
相关文章推荐
- 【LeetCode】Binary Tree Zigzag Level Order Traversal
- 【LeetCode-103】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_103_Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- 【Leetcode】【python】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[103]Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal (Java)
- C++详解Leetcode:103. Binary Tree Zigzag Level Order Traversal