La technologie pour améliorer est un processus graduel, donc je parle des questions leetcode algorithme de niveau le plus simple a commencé à écrire, puis à la difficulté intermédiaire, a finalement terminé toute la difficulté difficile.
Actuellement, je choisi le langage C, Python et Java comme langage de mise en uvre, parce que ces trois langues est tout à fait typique. En raison de l'espace et de l'énergie limitée pour réaliser d'autres langues amis qui sont intéressés, s'il vous plaît essayer vous-même.
principale difficulté à parler en même temps, je vais ajouter d'autres choses, je pourrais parler à la pile de protocole du système d'exploitation de grandes quantités de données distribués à partir du cadre, et de parler de gros volumes de données à l'intelligence artificielle, ... ....
Si vous avez des questions ou des commentaires après l'article lettre privée à moi .
Je continuerai à le partager, votre attention s'il vous plaît.
LeetCode 404. La gauche et les feuilles (Somme des feuilles de gauche)
Description du problème:
De gauche à calculer toutes les feuilles de l'arbre binaire et ensemble.
exemple:
langage C:
Nous savons que tous les nuds de feuilles cherchent des moyens est les nuds feuilles gauche et à droite sous-arbres à valeur ajoutée récursive.
Cette question est que sur cette base, il a ajouté une condition qui a besoin d'ajouter un juge pour déterminer si un nud feuille est le nud de feuille gauche.
Ici, nous avons deux méthodes.
La première méthode:
Direct déterminer si le nud de feuille gauche, si elle est, sa valeur est retournée avec les résultats de récursion frères et soeurs droit et parce que ce n'est pas nécessairement un nud feuille de frères et soeurs, donc même récursivité.
Si un nud est pas un nud est un nud feuille, puis revenir à gauche et à droite nuds et récursivité, ce qui est très facile à comprendre.
Code est la suivante:
La seconde méthode:
Cela nécessite une nouvelle définition de la fonction récursive, de sorte que si un noeud marqué quand le prochain nud est traversal gauche.
Si ce qui suit est le nud gauche pour traverser le noeud courant, puis, en plus de la fonction de transfert vers le nouveau nud à gauche, il y a une vraie valeur à la nouvelle fonction de transfert, ce qui est une marque au nud gauche, même si le nud droit, noeud droit et la transmission d'une nouvelle fonction à false. Ensuite, les nouvelles fonctions dans le processus de faire le temps, premier passage de regard sur les paramètres, si elle est un nud de marque gauche, sa valeur est retournée. Dans le cas contraire, continuer nud enfant récursive de ce noeud et renvoie leur somme.
Code est la suivante:
Les deux implémentations sont très similaires du point de vue du code, mais le principe est un peu différent.
Leur complexité de l'algorithme est le même, les performances des propriétés sont essentiellement les mêmes.
la mise en uvre de python de la langue:
implémentations Python utilisent la première approche, la seconde approche, le lecteur d'essayer.
Code est la suivante:
Java implémentation du langage:
implémentations Java utilisent la première approche, la seconde approche, le lecteur d'essayer.
Code est la suivante: