2013-09-05 4 views
2

Je suis en train de créer un programme pour créer un arbre binaire en utilisant des méthodes récursives, mais je vais avoir un problème.arbre binaire Eiffel

Dans ma classe MYNODE, je nous y compris gauche et à droite, mais ils peuvent être nuls (Void). Voici le code, quelqu'un pourrait-il m'aider?

class 
    MYNODE 
create 
    make 
feature 
    name: STRING 
    left: MYNODE 
    right: MYNODE 
    setname(n:STRING) do 
     name:= n 
    end 
    setleft(i:MYNODE) do 
     left:=i 
    end 
    setright(i:MYNODE) do 
     right:=i 
    end 
    make do 
     create nameme.make (80) 
    end 
end 

Et ma classe principale:

class 
    MAIN 
create 
    make 
feature 
    root : MYNODE 
    node: MYNODE 
    build_tree() do 
     io.put_string ("Name: ") 
     io.read_line 
     node.setname(io.last_string) 
     insert(node) 
    end 
    insert(no,al:MYNODE) do 
     if no.name<al.name then 
      if no.left = Void then 
       no.setleft(al) 
      else 
       insert(no.left,al) 
      end 
     else 
      if no.right = Void then 
       no.setright(al) 
      else 
       insert(no.right,al) 
      end 
     end 
    end 
    make do 
     create root.make() 
     create node.make() 
     build_tree() 
    end 
end 

Répondre

2

Je suppose que vous éprouvez des difficultés à compiler ce code parce que les attributs sont attachés et doivent donc être initialisé avant utilisation. Afin de permettre Void, vous devez déclarer les attributs left et right amovibles, c'est-à-dire:

left, right: detachable MYNODE