1. 程式人生 > >劍指offer題解C++【22】從上往下列印二叉樹

劍指offer題解C++【22】從上往下列印二叉樹

題目描述

從上往下打印出二叉樹的每個節點,同層節點從左至右列印。

解題思路

二叉樹的層次遍歷,藉助一個佇列實現。
建立一個佇列,其中元素的型別為二叉樹的節點;
按照“根-左-右”的順序依次將二叉樹的節點放入佇列,每次從隊頂取出對應節點的值,並刪除隊頂元素,直到佇列為空。

程式碼

/*
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> res; if (root == nullptr) return res; queue<TreeNode *> myqueue; myqueue.push(root); while (!myqueue.empty()){ TreeNode * front = myqueue.front(); res.push_back(front->val); myqueue.pop(); if
(front->left) myqueue.push(front->left); if (front->right) myqueue.push(front->right); } return res; } };