Как инициализировать двоичное дерево в c# - PullRequest
0 голосов
/ 01 мая 2020

Может кто-нибудь сказать мне, что мне нужно поставить вместо «// кода, отсутствующего здесь»?

Где я поставил «Код отсутствует», где я застрял , Я не уверен, что мне нужно поставить на место. Я новичок в бинарных деревьях, поэтому, к сожалению, не очень разбираюсь в том, как они работают. Для моего задания этот формат нужен моему учителю, поэтому другие онлайн-уроки не были особенно полезны

using System;

public class Program
{

public class binarytree

{
    public class node
    { // Single element of tree (node)
        public string data;
        public node //CODE MISSING HERE
        public node rightPointer;
    }

    public node root;

    public bool add(string item)
    {
        try //in case of memory overflow (full)
        {
            // store new item in memory and start looking from root of tree
            node newNode = new node();
            newNode.data = item;
            newNode.//CODE MISSING HERE
            newNode.rightPointer = //CODE MISSING HERE
            node currentNode = root;
            //Case that tree is empty
            if (currentNode == null)
            {
                root = newNode;
                return true;
            }
            else
            {
                //work out where to put new item, by traversing tree until we find a left
                node previous = currentNode;
                while (currentNode != null)
                {
                    previous = currentNode;
                    //compareTo compares two strings, returns val <0 if lower
                    if (item.CompareTo(currentNode.data) //CODE MISSING HERE
                    {
                        currentNode = //CODE MISSING HERE
                    }
                    else
                    {
                        currentNode = currentNode.rightPointer;
                    }
                }
                if (item.CompareTo(previous.data)<0)
                {
                    //CODE MISSING HERE
                }
                else
                {
                    previous.rightPointer = newNode;
                }
                return true;
            }
        }
        catch
        {
            return false;
        }
    }
}

public static void Main()
{
    binarytree bt = new binarytree();
    bt.add("I am root");
    bt.add("Avengers");
    bt.add("Marvel");
    Console.WriteLine(bt.root.data);
    Console.WriteLine(bt.root.//CODE MISSING HERE
    Console.WriteLine(bt.root.rightPointer.data);
 }
}

1 Ответ

0 голосов
/ 01 мая 2020

Я отсортировал

using System;

publi c Программа класса {

public class binarytree
{
    public class node
    { // Single element of tree (node)
        public string data;
        public node leftPointer; 
        public node rightPointer;
    }

    public node root;

    public bool add(string item)
    {
        try //in case of memory overflow (full)
        {
            // store new item in memory and start looking from root of tree
            node newNode = new node();
            newNode.data = item;
            newNode.leftPointer = null;
            newNode.rightPointer = null; 
            node currentNode = root;
            //Case that tree is empty
            if (currentNode == null)
            {
                root = newNode;
                return true;
            }
            else
            {
                //work out where to put new item, by traversing tree until we find a left
                node previous = currentNode;
                while (currentNode != null)
                {
                    previous = currentNode;
                    //compareTo compares two strings, returns val <0 if lower
                    if (item.CompareTo(currentNode.data)<0) 
                    {
                        currentNode = currentNode.leftPointer;
                    }
                    else
                    {
                        currentNode = currentNode.rightPointer;
                    }
                }
                if (item.CompareTo(previous.data)<0)
                {
                    previous.leftPointer = newNode;
                }
                else
                {
                    previous.rightPointer = newNode;
                }
                return true;
            }
        }
        catch
        {
            return false;
        }
    }
}

public static void Main()
{
    binarytree bt = new binarytree();
    bt.add("I am root");
    bt.add("Avengers");
    bt.add("Marvel");
    Console.WriteLine(bt.root.data);
    Console.WriteLine(bt.root.leftPointer.data); 
    Console.WriteLine(bt.root.rightPointer.data);
}

}

...