JZ32-题解 | #从上往下打印二叉树#
从上往下打印二叉树
http://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701
题目描述
不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。
题解:层次遍历
代码
/*
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> v;
if(!root) return v;
queue<TreeNode*> q;
TreeNode *temp = root;
q.push(temp);
while(!q.empty()){
temp = q.front();//取对头元素
v.push_back(temp->val);//对头元素压入数组中,实现对结点的访问
q.pop();//弹出队列元素
if(temp->left)//有左子树,则左子树元素入队列
q.push(temp->left);
if(temp->right)//有右子树,则右子树元素入队列
q.push(temp->right);
}
return v;
}
};