这一题与剑指Offer——树:把二叉树打印成多行(二叉树层序遍历)方法是一样的,只不过是直接打印。
也是需要创建队列,首先将根节点入队,然后循环判断队列是否为空,在循环体内取出队首节点并答应,然后判断该节点是否存在子节点,如存在,即加入到队列中。
代码:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> output;
if(root == NULL) //判断是否为空树
return output;
deque<TreeNode*> dequeTreeNode;
dequeTreeNode.push_back(root);//创建队列,加入根节点
while(dequeTreeNode.size())
{
TreeNode* pNode = dequeTreeNode.front();//取出队首节点并打印
output.push_back(pNode->val);
if(pNode->left)
dequeTreeNode.push_back(pNode->left);
if(pNode->right)
dequeTreeNode.push_back(pNode->right);
dequeTreeNode.pop_front();
}
return output;
}
参考:《剑指offer》、牛客网
ps:只是学习记录过程,如有侵权请指出,定会修正!若有错误,也欢迎指出!