带你快速刷完67道剑指offer
如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人的经验 ,比如准备 、简历 、实习 、校招总结 、offer选择 、也欢迎来一起参加秋招打卡活动 等;如果你是计算机小白,学习/转行/校招路上感到迷茫或者需要帮助,可以点此联系阿秀;免费分享阿秀个人学习计算机以来的收集到的好资源,点此白嫖;如果你需要《阿秀的学习笔记》网站中求职相关知识点的PDF版本的话,可以点此下载
# No22、从上往下打印二叉树
# 题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
# 示例1
输入
{5,4,#,3,#,2,#,1}
1
返回值
[5,4,3,2,1]
1
# 1、迭代做法,借助队列,比较简单
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> result;
if (root == nullptr) return result;
queue<TreeNode*> q;
q.push(root);
TreeNode* node;
while (!q.empty()) {
node = .front();
result.push_back(node->val);
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
q.pop();
}
return result;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 二刷:
# 1、借助队列来做,简单
运行时间:2ms 占用内存:528k
vector<int> PrintFromTopToBottom(TreeNode* root) {
if(root == nullptr) return vector<int>();
queue<TreeNode*>q;
q.push(root);
TreeNode *node = nullptr;
vector<int> result;
while(!q.empty()){
node = q.front();
q.pop();
result.push_back(node->val);
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);
}
return result;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17