leetcode 107 二叉树的层次遍历 II

思路来自104,作层序遍历,因为层序遍历就是从上到下,从左到右 而要求是从下到上,从左到右输出,只需稍作修改;
vector<vector> out 是最终的输出;
temp 是临时的容器,对二叉树作层序遍历,把某一层的数据都放入temp,该层处理完时,把temp放进out;
需要注意的是,temp放入out后,需要clear();
这样得到的out每一个单元 是某一层的从左到右的遍历结果,再把out的各个单元逆序,就可以得到二叉树的从下到上,从左到右的遍历结果;

代码:

class Solution {
public:
	static vector<vector<int>> levelOrderBottom(TreeNode* root) {
		vector<vector<int>> out;
		vector<int> temp;
		if (!root) return out; 
		queue<TreeNode *> q;
		q.push(root);
		int len = 0;
		while (!q.empty()) {
			len = q.size();
			while(len--){
				TreeNode *ptr = q.front();
				q.pop();
				temp.push_back(ptr->val);
				if (ptr->left) q.push(ptr->left);
				if (ptr->right) q.push(ptr->right);
			}
			out.push_back(temp);
			temp.clear();
		}
		for (int i = 0, j = out.size() - 1; i <= j; i++, j--){
			temp = out[i];
			out[i] = out[j];
			out[j] = temp;
		}
		return out;
	}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值