/*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]
]
*/
//思路:使用双段队列
//设置层次,如果是奇数层,从左往右
//如果偶数层,从右往左(左右指针相同)
#include <iostream>
#include <vector>
#include <deque>
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
};
class Solution
{
public:
std::vector<std::vector<int> > zigzagLevelOrder(TreeNode* root)
{
std::vector<std::vector<int> > vec;
if(root==NULL)
return vec;
int level=1; //odd or ....
int count;
TreeNode* tem;
std::deque<TreeNode*> deque;
deque.push_back(root);
while(!dequ
锯齿状层次化输出二叉树
最新推荐文章于 2021-05-29 08:39:27 发布