2013-09-05 26 views
2

我想創建一個程序來使用遞歸方法創建一個二叉樹,但我有一個問題。在艾菲爾的二進制樹

在我的課MYNODE,我包括我們的左和右,但他們可以爲null(空白)。這是代碼,有人可以幫我嗎?

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 

而我的主類:

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 

回答

2

我假設你有麻煩編譯這個代碼,因爲屬性連接,因此需要在使用前進行初始化。爲了允許Void,您需要聲明屬性leftright可拆卸,也就是說:

left, right: detachable MYNODE