從上往下打印二叉樹
題目描述:
從上往下打印出二叉樹的每個節點,同層節點從左至右打印。
解題思路:
經典題目,樹的層次遍歷,核心思想就是借助隊列
- 首先將根結點推入隊列
- 從隊列中取出首元素,打印首元素的值
- 之后如果首元素有左右孩子,依次將左右孩子結點推入到隊列中
- 重復上述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