[LeetCode] 102. Parcours d'ordre de niveau de l'arbre binaire, 107. Parcours d'ordre de niveau de l'arbre binaire II

 Auteur : Xiao Lu

Colonne : "Leetcode"

Mots préférés : Le monde est plus beau grâce aux jeunes qui se lèvent. —— "Quotidien du Peuple"


 102. Parcours d'ordre de niveau de l'arbre binaire

102. Parcours d'ordre de niveau de l'arbre binaire

Étant donné le nœud racine de votre arbre binaire  , renvoyez un parcours par ordre de niveauroot  de ses valeurs de nœud   . (c'est-à-dire visitez tous les nœuds couche par couche, de gauche à droite)

 Exemple:

Idées :

Ici, nous utilisons une file d'attente q etlevelize (représentant le nombre de données dans la couche actuelle)

Au début, nous insérons d'abord une valeur dans q, et la taille de niveau est 1. Lorsque q n'est pas vide, nous bouclons les temps de taille de niveau, chaque fois que nous récupérons la tête de la file d'attente, puis jugeons si les éléments récupérés ont gauche et droite nœuds. Les mots sont insérés, puis la taille du niveau est mise à jour à la fin de la boucle.

code:

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        queue<TreeNode*>q;
        int levelsize=0;
        if(root)
        {
            q.push(root);
            levelsize=1;
        }
        vector<vector<int>>vv;
        while(!q.empty())
        {
            vector<int>v;
            while(levelsize--)
            {
                TreeNode*front=q.front();
                q.pop();
                v.push_back(front->val);
                if(front->left)
                {
                    q.push(front->left);
                }
                if(front->right)
                {
                    q.push(front->right);
                }
            }
            levelsize=q.size();
            vv.push_back(v);
        }
        return vv;
    }
};

 107. Traversée de l'ordre des niveaux de l'arbre binaire II

 107. Traversée de l'ordre des niveaux de l'arbre binaire II

sujet: 

Étant donné le nœud racine de votre arbre binaire  , renvoyez le parcours ascendant deroot  ses valeurs de nœud   . (C'est-à-dire, parcourez de gauche à droite couche par couche depuis la couche où se trouve le nœud feuille jusqu'à la couche où se trouve le nœud racine)

Exemple:

Idées :

Identique à la question précédente, avec une inversion supplémentaire à la fin.

code:

class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        queue<TreeNode*>q;
        int levelsize = 0;
        if (root)
        {
            q.push(root);
            levelsize = 1;
        }
        vector<vector<int>>vv;
        while (!q.empty())
        {
            vector<int>v;
            while (levelsize--)
            {
                TreeNode* front = q.front();
                q.pop();
                v.push_back(front->val);
                if (front->left)
                {
                    q.push(front->left);
                }
                if (front->right)
                {
                    q.push(front->right);
                }
            }
            levelsize = q.size();
            vv.push_back(v);
        }
        reverse(vv.begin(),vv.end());
        return vv;
    }
};

Je suppose que tu aimes

Origine blog.csdn.net/m0_69061857/article/details/131036213
conseillé
Classement