题解 | #从上往下打印二叉树#

从上往下打印二叉树

https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701

/*
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;
		queue<TreeNode *> que;
		TreeNode *cur;
		if(!root) return res;
		que.push(root);
		while(!que.empty())
		{
			cur=que.front();
			que.pop();
			if(cur->left)que.push(cur->left);
			if(cur->right)que.push(cur->right);
			res.push_back(cur->val);
		}
		return res;
    }
};

最直观的想法是,层次遍历,使用辅助队列进行层次遍历。使用res存储遍历结果,使用que辅助存储二叉树,使用cur表示当前队列的头节点。首先判断根结点root是否为空,如果是则直接返回空的res,反之将头节点加入到队列中,当队列不为空,就使用cur接收队列的头节点,然后将头节点弹出来,并且当头结点的左孩子不为空则将左孩子加入队列,头孩子的右节点不为空则将右孩子加入队列,接着将头节点的值加入结果数组中,最后返回res即可。

#从上往下打印二叉树#
剑指offer 文章被收录于专栏

剑指offer专栏主要分享剑指offer题解。

全部评论
点赞 回复 分享
发布于 2023-03-15 14:53 北京

相关推荐

看起来名字可以很长:笑死 我暑期实习阿里云的意向也被 qq 邮箱放在垃圾箱了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务