目录
题目:剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣(Leetcode)
题目的接口:
解题思路:
代码:
过啦!!!
写在最后:
题目:剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣(Leetcode)
题目的接口:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<int> levelOrder(TreeNode* root) {}
};
解题思路:
这道题让我们遍历二叉数,然后打印,
题目要求返回的是一个数组,
一开始遍历二叉树我第一个想到的是递归,
但很明显递归在这道题不好用,
那就只能用迭代去做,
我们可以利用队列先进先出的特性来实现遍历:
根据题意,我们需要从上到下遍历二叉数,
1. 将二叉树自上而下每一个节点指针入队;
2. 循环出队,出队时push_back进vector;
3. 当队列为空时,证明打印完成了,返回打印数组即可。
代码:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<int> levelOrder(TreeNode* root) {//如果二叉树为空,返回空数组if(root == nullptr){return {};}//建一个队列存放二叉树节点queue<TreeNode*> q;vector<int> ans;//第一层的根节点q.push(root);//一直出队,直到队列为空while(!q.empty()){//记录队头TreeNode* cur = q.front();//将队头出队q.pop();//打印二叉树每一个节点的值ans.push_back(cur->val);//二叉数的每一层所有节点都push进队列if(cur->left != nullptr){q.push(cur->left);}if(cur->right != nullptr){q.push(cur->right);}}return ans;}
};
过啦!!!
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。