[leetcode]. 107. Binary Tree Level Order Traversal II

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

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

    3
   / \
  9  20
    /  \
   15   7

return its bottom-up level order traversal as:

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

解題思路:
本題和102. Binary Tree Level Order Traversal類似,只是遍歷的時候102. Binary Tree Level Order Traversal是從上到下一層一層遍歷,而本題是從下到上一層層遍歷,基本思路相同,唯一的區(qū)別是要先求出二叉樹的深度。

具體代碼如下:

class Solution {
public:
    int getDepth(TreeNode* root)
    {
        if(!root) return 0;
        return max(getDepth(root->left), getDepth(root->right)) + 1;
    }

    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector<vector<int>> ret;
        if(!root) return ret;
        int depth = getDepth(root);
        ret.resize(depth);
        int levelNumber = 0;
        queue<TreeNode*> level;
        level.push(root);
        
        while(!level.empty())
        {
            int size = level.size();
            for(int i = 0; i < size; ++i)
            {
                TreeNode* temp = level.front();
                level.pop();
                ret[depth - levelNumber - 1].push_back(temp->val);
                if(temp->left) level.push(temp->left);
                if(temp->right) level.push(temp->right);
            }
            levelNumber ++;
        }
        
        return ret;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容