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

题目描述

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

思路:

    1
   / \
  2   3
 /   / \
4   5   6
// 打印结果为: [1,2,3,4,null,5,6]
/* 需要用到的队列知识,先进先出
queue 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 PrintFromTopToBottom(TreeNode* root){
		vector res;
		if(root == NULL) return res;
		queue 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;
	}
};

你可能感兴趣的:(leecode)