LeetCode-107:バイナリツリー階層トラバーサルII

一つ、タイトル説明

  • バイナリツリーを考えると、ノードは、ボトムアップ型の値の階層トラバーサルを返します。(すなわち、ルートノードのリーフノードから層への物理層によって、層トラバーサルによって層が左から右へ)

  • たとえば:バイナリツリーを考えます [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7

そのボトムアップ階層トラバーサルに戻ります:

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

第二に、問題解決のアプローチ

これは、一連の問題です。バイナリツリートラバーサルは、各エリアの要素を分離するために、階層的に共通です。
コアステップは、あなたがそれらの各々の最後の要素を決定する方法である
、我々はキューレベルのバイナリツリートラバーサルを使用することができますを再入力するたびに注意whileサイクルを、キューデータは、この層のノードのバイナリ現在の数ですその後、我々は取るauto len = queue.size()前に、lenデータが追加されるvectorことに。

第三に、完全なコード

class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        queue<TreeNode*> Q;
        vector<int> tmp;
        vector<vector<int>> sln;
        if(!root)   return sln;
        Q.push(root);
        while(!Q.empty()){
            auto size = Q.size();
            for(int i = 0; i < size; i++){
                auto ins = Q.front();
                Q.pop();
                tmp.push_back(ins->val);
                if(ins->left)
                    Q.push(ins->left);
                if(ins->right)
                    Q.push(ins->right);
            }
            sln.push_back(tmp);
            tmp.clear();
        }
        reverse(sln.begin(), sln.end());
        return sln;
    }
};

第四に、業績

ここに画像を挿入説明

公開された30元の記事 ウォンの賞賛3 ビュー824

おすすめ

転載: blog.csdn.net/weixin_44587168/article/details/105275533