题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
此题属于队列的应用,具体解题过程为:
- 遇到结点先压入队列中
- 如果其有左右子结点,则再将左右子结点存在队列中(置于队尾)
- 再从队列中按序取出结点并输出结果,并进行相同的操作,直至队列为空位置
代码实现
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector <int>res;
if(!root)return res;
queue <TreeNode *> node;
node.push(root);
TreeNode *tmp;
while(!node.empty()){
tmp=node.front(),res.push_back(tmp->val),node.pop();
if(tmp->left)node.push(tmp->left);
if(tmp->right)node.push(tmp->right);
}
return res;
}
};
运行时间:2ms
占用内存:504k