Retourner le nombre de descendants du sommet x de l'arbre T ??

Fermé
yass06 - Modifié par mamiemando le 20/02/2013 à 01:48
mamiemando Messages postés 33381 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 26 novembre 2024 - 20 févr. 2013 à 01:55
Bonjour,

J'ai essayé d'écrire une fonction qui retourne le nombre de descendants entre le sommet x et la fin de l'arbre mais ça ne marche pas. Si quelqu'un peut me dire ou est la faute??

Merci

def nbDescendent(self,x): 
        if x == None : 
           return 0 
 if ((x.fg == None) and (x.fd == None)) :  
    return 0 
        else: 
           nb = 0 
    nbg =0 
    nbd =0 
    nbg = nbDescendent(self , x.fg) 
    nbd = nbDescendent(self, x.fd) 
    if (nbg > nbd): 
   nb += nbg + 1 
    else : 
   nb += nbd + 1 
  return nb 


A voir également:

1 réponse

mamiemando Messages postés 33381 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 26 novembre 2024 7 802
20 févr. 2013 à 01:55
Déjà tu as des problèmes d'indentation. Je t'invite à forcer ton éditeur à transformer implicitement les tabulations en espace sinon tu t'exposes à des problèmes en python.

Par exemple vu que tu es sous linux, si tu utilises vim, tu peux ajouter dans ~/.vimrc
https://vim.fandom.com/wiki/Converting_tabs_to_spaces

set expandtab
set ts=4
set sw=4


Ensuite je ne comprends pas pourquoi dans ton code tu compares nbg et nbd. Je ne sais pas si j'ai bien compris l'énoncé, mais si le but est de trouver le nombre de descendant d'un noeud x dans un arbre tel que chaque noeud est représenté par un élément fg et fd (donc un arbre où chaque noeud un fils gauche potentiel et un fils droit potentiel) le code serait plutôt :

def num_children_rec(x, n):
  if x.fg:
    n += num_children_rec(x.fg, n)
  if x.fd:
    n += num_children_rec(x.fd, n)
  return n + 1

def num_children(x):
  return num_children_rec(x, 0)


Bonne chance
0