1. 程式人生 > 其它 >103. Binary Tree Zigzag Level Order Traversal(Leetcode每日一題-2020.12.22)

103. Binary Tree Zigzag Level Order Traversal(Leetcode每日一題-2020.12.22)

技術標籤:leetcode每日一題202012leetcode廣度優先搜尋

Problem

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,null,null,15,7],
在這裡插入圖片描述
return its zigzag level order traversal as:

在這裡插入圖片描述

Solution

/**
 * Definition for a binary tree node.
 * 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>> ret; if(!root) return ret; vector<int> level; int flag = 0; queue<TreeNode *> tn_queue; tn_queue.push(root); while(!tn_queue.empty()) { int cur_level_size = tn_queue.
size(); for(int i = 0;i<cur_level_size;++i) { TreeNode * tmp = tn_queue.front(); tn_queue.pop(); level.push_back(tmp->val); if(tmp->left) tn_queue.push(tmp->left); if(tmp->right) tn_queue.push(tmp->right); } if(flag == 0) { flag = 1; } else { reverse(level.begin(),level.end()); flag = 0; } ret.push_back(level); level.clear(); } return ret; } };