面试题23:从上往下打印二叉树
2016-07-02 10:18
274 查看
题目:从上往下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
这题挺简单的。相当于广度优先搜索,考虑用队列来做。如果是深度优先,可以使用堆栈或者采用递归。代码如下:
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> treeNodeVect;
if(root==NULL)
return treeNodeVect;
queue<TreeNode *> nodeQueue;
TreeNode *treeNode=root;
nodeQueue.push(treeNode);
while(!nodeQueue.empty())
{
treeNode=nodeQueue.front();
nodeQueue.pop();
treeNodeVect.push_back(treeNode->val);
if(treeNode->left)
nodeQueue.push(treeNode->left);
if(treeNode->right)
nodeQueue.push(treeNode->right);
}
return treeNodeVect;
}
};
这题挺简单的。相当于广度优先搜索,考虑用队列来做。如果是深度优先,可以使用堆栈或者采用递归。代码如下:
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> treeNodeVect;
if(root==NULL)
return treeNodeVect;
queue<TreeNode *> nodeQueue;
TreeNode *treeNode=root;
nodeQueue.push(treeNode);
while(!nodeQueue.empty())
{
treeNode=nodeQueue.front();
nodeQueue.pop();
treeNodeVect.push_back(treeNode->val);
if(treeNode->left)
nodeQueue.push(treeNode->left);
if(treeNode->right)
nodeQueue.push(treeNode->right);
}
return treeNodeVect;
}
};
相关文章推荐
- 面试题19:二叉树的镜像
- 数据库的四种隔离级别,程序员必须要了解的
- Android常见面试题(一)
- 只有程序员看的懂面试圣经|如何拿下编程面试
- 每个程序员都应该收藏的算法复杂度速查表
- 自学的程序员如何找到好工作?(你能够独立地写代码,解决问题并给世界带来一些新东西。这是最难能可贵的一点,也是公司在不断追求的一点)
- Java程序员可能犯的3个常见SQL错误
- 推荐!国外程序员整理的Java资源大全
- 进击的码农-6
- iOS面试题二
- 黑马程序员——多线程(下)
- 第135课: Spark面试经典系列之数据倾斜:数据倾斜是多么痛?!
- "MD5"加密算法全解析
- 剑指offer-3-面试12:打印1到最大的n位数
- 一道面试题,一个五位数字ABCDE*4=EDCBA,这个五个数字不重复,请问A,B,C,D,E分别是几?
- 程序员, 不要过度封装
- 某openstack公司面试经历
- 半路出家的程序员
- 前端面试题--难点问题
- mysql经典面试题