1- // queue.cpp
21/* *
32 * Definition for a binary tree node.
43 * struct TreeNode {
54 * int val;
65 * TreeNode *left;
76 * TreeNode *right;
8- * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
7+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
10+ * right(right) {}
911 * };
1012 */
1113class Solution {
1214public:
13- vector<vector<int >> zigzagLevelOrder (TreeNode * root) {
14- queue<TreeNode *> qe;
15- vector<vector< int >> result ;
16- if (root == NULL )
17- return result;
18- qe. push (root) ;
19- TreeNode *p;
20- int level = 0 , size;
21- while (! qe.empty ()) {
22- result. push_back (vector< int >(qe. size ()));
23- size = qe.size ();
24- for ( int i = 0 ; i < size; ++i) {
25- p = qe. front () ;
26- qe. pop ();
27- result[level][i] = p->val ;
28- if (p->left != NULL )
29- qe.push (p->left );
30- if (p-> right != NULL )
31- qe.push (p-> right );
32- }
33- if (qe. empty ())
34- break ;
35- ++level;
36- result. push_back (vector< int >( qe.size ()) );
37- for ( int i = qe. size () - 1 ; i >= 0 ; --i) {
38- p = qe. front () ;
39- qe. pop ();
40- result[level][i] = p->val ;
41- if (p->left != NULL )
42- qe.push (p->left );
43- if (p-> right != NULL )
44- qe. push (p-> right ) ;
45- }
46- ++level ;
15+ vector<vector<int >> zigzagLevelOrder (TreeNode* root) {
16+ if (root == nullptr )
17+ return {} ;
18+ queue<TreeNode*> qe ({root});
19+ vector<vector< int >> result;
20+ int level = 0 , size ;
21+ while (!qe. empty ()) {
22+ result. push_back (vector< int >(qe. size ())) ;
23+ size = qe.size ();
24+ for ( int i = 0 ; i < size; ++i) {
25+ auto p = qe.front ();
26+ qe. pop ();
27+ result[level][i] = p-> val ;
28+ if (p-> left != nullptr )
29+ qe. push ( p->left ) ;
30+ if (p->right != nullptr )
31+ qe.push (p->right );
32+ }
33+ if ( qe.empty ())
34+ break ;
35+ ++level;
36+ result. push_back (vector< int >(qe. size ())) ;
37+ for ( int i = qe. size () - 1 ; i >= 0 ; --i) {
38+ auto p = qe.front ( );
39+ qe. pop ();
40+ result[level][i] = p-> val ;
41+ if (p-> left != nullptr )
42+ qe. push ( p->left ) ;
43+ if (p->right != nullptr )
44+ qe.push (p->right );
45+ }
46+ ++level ;
47+ }
48+ return result ;
4749 }
48- return result;
49- }
50- };
50+ };
0 commit comments