从上往下打印二叉树
题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路:
经典题目,树的层次遍历,核心思想就是借助队列
- 首先将根结点推入队列
- 从队列中取出首元素,打印首元素的值
- 之后如果首元素有左右孩子,依次将左右孩子结点推入到队列中
- 重复上述2,3的过程,直到队列为空结束循环
代码:
class Solution{
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
if (root == NULL) {
return NULL;
}
queue<TreeNode*> treeNodePtr;
vector<int> result;
treeNodePtr.push(root);
while (!treeNodePtr.empty()) {
TreeNode *node = treeNodePtr.front();
treeNodePtr.pop();
result.push_back(node->val);
if (node->left != NULL) {
treeNodePtr.push(node->left);
}
if (node->right != NULL) {
treeNodePtr.push(node->right);
}
}
return result;
}
}
2018.10.11