Leecode---从上往下打印出二叉树的每个节点,同层节点从左至右打印

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

思路:
    1
   / \
  2   3
 /   / \
4   5   6
// 打印结果为: [1,2,3,4,null,5,6]
/* 需要用到的队列知识,先进先出
queue<int> q;
q.front(); 返回队列最先进的元素,只返回不删除
q.back(); 返回队末元素
q.pop(); 删除最先进的元素

可以用队列(queue)来做,先把 1 存入队列

从 1 进 队列 开始:
(1) 出队打印1, 再将 1 的左右儿子入队
(2 , 3) 出队打印 2 , 再将 2 的左右儿子入队 变成(3 ,4)
(3 , 4) 出队打印3, 再将 3 的左右儿子入队 变成(4, 5, 6)
以此推出,打印 1 2 3 4 5 6
C++ 代码
/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution{
public:
	 vector<int> PrintFromTopToBottom(TreeNode* root){
		vector<int> res;
		if(root == NULL) return res;
		queue<TreeNode*> q; //注意这定义队列时候一定是 TreeNode 结构
		//只有这样才可以用 q.front() 等函数,我们 vector 数组才是要存的 int 类型的 val 
		q.push(root);
		while(q.size()){
			TreeNode* t = q.front();
			res.push_back(t->val);
			q.pop();
			if(t->left) q.push(t->left);
			if(t->right) q.push(t->right);			
		}	
		return res;
	}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的懒猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值