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;
}
};