Binary Tree Zigzag Level Order Traversal

昨天面试微软又考到层次遍历。添上leetcode此题代码

class Solution { 
public: 
	vector<vector<int> > zigzagLevelOrder(TreeNode *root) {     
		vector<vector<int>>result; 
		if(root==NULL)return result; 
		vector<int>levelresult; 
		vector<TreeNode *>v; 
		int last=0; 
		int front=0; 
		int rear=0; 
		TreeNode *p=root; 
		v.push_back(p); 
		int level=0; 
		while(front<=rear) 
		{ 
			p=v[front++];    
			levelresult.push_back(p->val); 
			if(p->left){v.push_back(p->left);rear++;} 
			if(p->right){v.push_back(p->right);rear++;} 
			if(front>last) 
			{ 
				level++; 
				last=rear; 
				result.push_back(levelresult); 
				levelresult.clear(); 
			}
		}
		for(int i=0;i<result.size();i++) 
		{ 
			if(i%2==1) 
				reverse(result[i].begin(),result[i].end()); 
		} 
		return result;         
	} 
}; 

 

 
posted @ 2013-04-24 13:26  代码改变未来  阅读(259)  评论(0编辑  收藏  举报