[leetcode] 102. Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

return its level order traversal as:

[
  [3],
  [9,20],
  [15,7]
]

解題思路:
本題讓我們求解數(shù)的寬度優(yōu)先遍歷,具體思路有使用隊列將每一層的節(jié)點保存下來,然后按照FIFO的選擇逐個遍歷,然后將每個節(jié)點的子節(jié)點存入隊列,以此類推。

具體代碼如下:

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> ret;
        queue<TreeNode*> level;
        if(!root) return ret;
        level.push(root);
        
        while(!level.empty())
        {
            vector<int> curLevel;
            int size = level.size();
            for(int i = 0; i < size; ++i)
            {
                TreeNode* curr = level.front();
                curLevel.push_back(curr->val);
                level.pop();
                if(curr->left) level.push(curr->left);
                if(curr->right) level.push(curr->right);
            }
            ret.push_back(curLevel);
        }
        return ret;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容