LeetCode - Binary Tree Zigzag Level Order Traversal

发布时间:2017-6-25 9:46:37 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"LeetCode - Binary Tree Zigzag Level Order Traversal",主要涉及到LeetCode - Binary Tree Zigzag Level Order Traversal方面的内容,对于LeetCode - Binary Tree Zigzag Level Order Traversal感兴趣的同学可以参考一下。

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 between). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 return its zigzag level order traversal as: [ [3], [20,9], [15,7] ] /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int> > zigzagLevelOrder(TreeNode *root) { vector<vector<int> > result; if(root==NULL){ return result; } vector<int> levelVec; queue<pair<TreeNode*,int> > levelQueue; pair<TreeNode*,int>* tmp; int currLevel=0; levelQueue.push(make_pair(root,currLevel)); while(!levelQueue.empty()){ tmp=&levelQueue.front(); levelQueue.pop(); if(tmp->second!=currLevel){ currLevel=tmp->second; result.push_back(levelVec); levelVec.clear(); } levelVec.push_back(tmp->first->val); if(tmp->first->left){ levelQueue.push(make_pair(tmp->first->left,tmp->second+1)); } if(tmp->first->right){ levelQueue.push(make_pair(tmp->first->right,tmp->second+1)); } } result.push_back(levelVec); for(int i=0;i<result.size();i++){ if(i&1){ reverse(result[i].begin(),result[i].end()); } } return result; } };

上一篇:java 操作exel
下一篇:wikioi p1160 蛇形矩阵

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。