[LeetCode] Binary Tree Zigzag Level Order Traversal(bfs)
2014-08-04 22:00
357 查看
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:
方法:用queue实现bfs,对树按层进行搜索,树的结点按层存入queue中,用NULL值标记本层的结束。用bool值按层取反决定本层的vector是否要逆置。
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] ]
/** * 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> > res; if(root==NULL) return res; queue<TreeNode *> q; q.push(root); q.push(NULL); res = bfs(q); return res; } private: vector<vector<int> > bfs(queue<TreeNode *> q){ vector<vector<int> > res; vector<int> temp; bool needReverse = false; while(!q.empty()){ TreeNode *p = q.front(); q.pop(); if(p!=NULL){ temp.push_back(p->val); if(p->left!=NULL){ q.push(p->left); } if(p->right!=NULL){ q.push(p->right); } }else if(p==NULL ){ if(needReverse){ int len = temp.size(); for(int i=0,j=len-1;i<j;i++,j--) swap(temp[i],temp[j]); } res.push_back(temp); temp.clear(); needReverse = (!needReverse); if(!q.empty()) q.push(NULL); } }//end while return res; }//end bfs };
方法:用queue实现bfs,对树按层进行搜索,树的结点按层存入queue中,用NULL值标记本层的结束。用bool值按层取反决定本层的vector是否要逆置。
相关文章推荐
- LeetCode--Binary Tree Zigzag Level Order Traversal
- 【LeetCode】Binary Tree Zigzag Level Order Traversal
- LeetCode – Refresh – Binary Tree Zigzag Level Order Traversal
- [leetcode] Binary Tree Zigzag Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- [leetcode] Binary Tree Zigzag Level Order Traversal
- LeetCode OJ Binary Tree Zigzag Level Order Traversal
- 【LeetCode-103】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
- leetcode_question_103 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 java
- [LeetCode] Binary Tree Zigzag level order traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode]题解(python):103-Binary Tree Zigzag Level Order Traversal
- [C++]LeetCode: 101 Binary Tree Zigzag Level Order Traversal
- LeetCode 103: Binary Tree Zigzag Level Order Traversal