4.2 leetcode -2 binary-tree-zigzag-level-order-traversal
2017-08-24 10:19
246 查看
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.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1
/ \
2 3
/
4
\
5
The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
这个题目就是让我实战一次分层遍历的,然后至于Z字型,只需要翻转就行了
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.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1
/ \
2 3
/
4
\
5
The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
这个题目就是让我实战一次分层遍历的,然后至于Z字型,只需要翻转就行了
/** * 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) { queue<TreeNode*> node; vector<vector<int> > vreturn; bool flag = true;//0-left-right int ceil_num = 0; int ceil_numtmp = 0; if(root != NULL ) { ceil_num = 1; node.push(root); } else return vreturn; while(!node.empty()) { vector<int> numvector(ceil_num); for(int i = 0;i < ceil_num;i++) { TreeNode *now = node.front(); numvector[i] = now->val; node.pop(); if(now->left != NULL) { ceil_numtmp ++; node.push(now->left); } if(now->right != NULL) { ceil_numtmp ++; node.push(now->right); } } flag = !flag; if(flag == true) { //reverse for(int i = 0;i < (ceil_num/2);i++) { int tmp = numvector[ceil_num -i - 1]; numvector[ceil_num -i - 1] = numvector[i]; numvector[i] = tmp; } } vreturn.push_back(numvector); ceil_num = ceil_numtmp; ceil_numtmp = 0; } return vreturn; } };
相关文章推荐
- [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
- 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
- LeetCode – Refresh – Binary Tree Zigzag Level Order Traversal
- Leetcode Binary Tree Zigzag level Order Traversal
- LeetCode—Binary Tree Zigzag Level Order Traversal 二叉树的Z扫描
- LeetCode: 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] Binary Tree Zigzag Level Order Traversal (Java)
- LeetCode--Binary Tree Zigzag Level Order Traversal
- LeetCode 103 Binary Tree Zigzag Level Order Traversal(二叉树层序遍历)
- leetcode——103——Binary Tree Zigzag Level Order Traversal