Leetcode Note: Binary Tree Zigzag Level Order Traversal
I. 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 ).
For example: Given binary tree, 20,
3 / 9 20 / 15 7
Ii. Question Analysis
BFS. Here, a bool record is used to read data from left to right or from right to left. After each layer traversal ends, it is flipped.
Iii. Sample Code
#include
#include
using namespace std;struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x) :val(x), left(NULL), right(NULL){}};class Solution{public: vector
> zigzagLevelOrder(TreeNode *root) { vector
> result; Traverse(root, 1, result, true); return result; }private: void Traverse(TreeNode *root, size_t level, vector
> & result, bool leftToRight) { if (root == NULL) return; if (level > result.size()) result.push_back(vector
()); if (leftToRight) result[level - 1].push_back(root->val); else result[level - 1].insert(result[level - 1].begin(), root->val); Traverse(root->left, level + 1, result, !leftToRight); Traverse(root->right, level + 1, result, !leftToRight); }};
Iv. Summary
It is a little more difficult than Binary Tree Level Order Traversal and Binary Tree Level Order Traversal II. Pay attention to more details.