leetcode 110 arbre binaire équilibré

Que ce soit équilibré arbre binaire?

Titre:
Étant donné un arbre binaire pour déterminer si elle est un arbre binaire très équilibré.
Dans ce problème, un arbre binaire équilibré est définie comme:
la valeur absolue de la différence entre la hauteur des sous - arbres gauche et droit d' un arbre binaire de chaque noeud ne dépasse pas 1.

Exemples:
Exemple 1:
un arbre binaire donné [3,9,20, null, null, 15,7 ]

    3
   / \
  9  20
    /  \
   15   7

Return true.
Exemple 2:
donnée arbre binaire [1,2,2,3,3, null, null, 4,4 ]

       1
      / \
     2   2
    / \
   3   3
  / \
 4   4

faux retour.

analyse du sujet

  • Cible: chaque noeud de la différence de hauteur de la valeur absolue des sous - arbres gauche et droit si inférieur ou égal à 1
  1. Regarder sous-arbre gauche et à droite de la profondeur peut ⇒ récursive
  2. sous-arbre gauche est déterminé si la différence de profondeur pas plus de 1

analyse des idées

variable effet
profondeur() Résoudre le sous-arbre profondeur gauche et à droite

Supposons que la profondeur de la couche inférieure jusqu'à la 0 une
profondeur ⇒ sous - arbres gauche et droit du noeud à une profondeur valeur supérieure plus 1

processus

  1. Si le nœud actuel est la différence de sous-arbres gauche et droite hauteur est supérieure à 1 ⇒ return false
  2. Déterminer si oui ou non le sous-arbres gauche et droit équilibré récursive arbre binaire ⇒

Code est la suivante

 int depth(TreeNode*root)
 {
     if(!root) return 0;
     return 1 + max(depth(root->left),depth(root->right));
 }
class Solution {
public:
    bool isBalanced(TreeNode* root) {
        if(!root) return true;
        if(abs(depth(root->left)-depth(root->right))>1) return false;
        return isBalanced(root->left)&&isBalanced(root->right);
    }   
};
Publié 34 articles originaux · louanges gagnées 0 · Vues 573

Je suppose que tu aimes

Origine blog.csdn.net/Luyoom/article/details/104917793
conseillé
Classement