Связанный Binary Tree

голоса
-6

Я имею проблему выяснить, как получить мою функцию поиска, чтобы работать для моего бинарного дерева она возвращает верно для корня, но я не знаю, как идти о прохождении остальной части дерева.

public boolean contains(Object e)
     {
         return search(root, e);
     }

private boolean search(BinaryNode n, Object e)
    {

        //If the current node is null,
         //then the value clearly isn't found and return false.

         if (n == null) 
         {
             return false;
    } 
        //If the node contains the search value,
        //then the value is found and return true.
         if(n.getValue() == e)
        {
            return true;
        }


         //If the node isn't null but also doesn't contain the search value,
         //then search both the left and right subtrees

         return false;

     }
Задан 27/04/2017 в 23:22
источник пользователем
На других языках...                            


1 ответов

голоса
0

Вот реализация Contains()от некоторого golang кода , который я валяюсь на моем рабочем столе. Вы могли бы порт его Java.

// Contains indicated whether or not a value is in the tree.
func (tree *Tree) Contains(value int) bool {
    return (tree.find(tree.Root, value) != nil)
}

// find will search for a node containing a given value, in a tree whose
// root node is root.
func (tree *Tree) find(root *Node, value int) *Node {
    if nil == root {
        return nil
    }

    if value > root.Data {
        return tree.find(root.Right, value)
    } else if value < root.Data {
        return tree.find(root.Left, value)
    } // else, root.Data == node.Data

    return root
}
Ответил 28/04/2017 в 00:05
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more