标签:
今天的收获:
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<vector<int>> LevelTravel(TreeNode* root){ vector<vector<int>> 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(),result[i].end()); return result; } vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>> result; result = LevelTravel(root); return result; } };
标签:
原文地址:http://www.cnblogs.com/mokayy/p/5582341.html