Today's Harvest:
Queue template exists in 1.c++
Queue<template type> Vec;
Vec.push ();
Vec.pop ();
The queue does not have empty operations, clear () functions, so you can define a new empty queue queue< * * > Newqu, then Swap (vec,newqu), thus emptying the VEC.
2. Using the queue hierarchy traversal
Thought: When traversing the node, the child will be in the queue at several points.
/** * 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>> leveltravel (treenode* root) {Vector<vector<i nt>> result; Queue<treenode*> vec,tmp; Vector<int> temp; if (root = NULL) return result; Vec.push (root); while (!vec.empty ()) {while (!vec.empty ()) {TreeNode * cur = vec.front (); Vec.pop (); if (cur->left!= NULL) {Tmp.push (cur->left); } if (cur->right!= NULL) {Tmp.push (cur->right); } temp.push_back (Cur->val); } swap (VEC,TMP); Result.push_back (temp); Temp.clear (); } for (int i =1;i<result.size (); I =i+2) reverse (Result[i].begin (), Res Ult[i].end ()); return result; } vector<vector<int>> Zigzaglevelorder (treenode* root) {vector<vector<int>> result; result = Leveltravel (root); return result; }};
Traversing---C + + with a queue hierarchy