今天的收获:
1.c++中存在queue模板
queue<template type> vec;
vec.push();
vec.pop();
queue 没有清空操作,clear()等函数,因此可以定义一个新的空队列 queue< ** > newqu,然后 swap(vec,newqu ),这样就清空vec 了。
2.借助queue的层次遍历
思想:在遍历该节点时,将它的孩子几点入队。
/** * 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> LevelTravel(TreeNode* root){ vector > result; queue vec,tmp; vector 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