刷题102. Binary Tree Level Order Traversal

一、题目说明

题目102. Binary Tree Level Order Traversal,给一个二叉树,返回按层遍历的各节点,每层返回一个数组。

二、我的解答

这个题目是普通的二叉树按层遍历,没什么难度。代码如下:

class Solution{
	public:
		vector<vector<int>> levelOrder(TreeNode* root){
			vector<vector<int>> r;
			TreeNode* p;
			if(root ==NULL) return r;
			queue<TreeNode*> q;
			q.push(root);
			int curLevelNum = 1,nextLevelNum=0;

			while(! q.empty()){
				//出队列 
				vector<int> cur;
				for(int i=0;i<curLevelNum;i++){
					p = q.front();
					cur.push_back(p->val);
					q.pop();
					
					//入队列
					if(p->left !=NULL){
						q.push(p->left);
						nextLevelNum++;
					} 
					if(p->right !=NULL){
						q.push(p->right);
						nextLevelNum++;
					}
				}
				curLevelNum = nextLevelNum;
				nextLevelNum = 0;
				r.push_back(cur);	
			}
			return r;
		}
};

性能如下:

Runtime: 8 ms, faster than 60.42% of C++ online submissions for Binary Tree Level Order Traversal.
Memory Usage: 13.8 MB, less than 90.14% of C++ online submissions for Binary Tree Level Order Traversal.

三、优化措施

不再做任何优化了。

posted @ 2020-03-03 20:06  siwei718  阅读(97)  评论(0)    收藏  举报