二叉树在埃菲尔

时间:2013-09-05 17:26:59

标签: recursion binary-search-tree eiffel

我正在尝试创建一个使用递归方法创建二叉树的程序,但我遇到了问题。

在我的班级MYNODE中,我将我们左右包括在内,但它们可以为null(Void)。这是代码,有人可以帮助我吗?

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

1 个答案:

答案 0 :(得分:3)

我假设您在编译此代码时遇到问题,因为属性已附加,因此需要在使用前进行初始化。为了允许Void,您需要声明属性leftright可分离,也就是说:

left, right: detachable MYNODE