// public static void Insert(TreeNode root, char c)
        public static void Insert(TreeNode root, Ehdokas c)
        {
            TreeNode daddy = null;

            while (root != null)
            {
                daddy = root;
                int ret = c.Sukunimi.CompareTo(root._ehdokas.Sukunimi);


                //if (c < root.Data)
                if (ret < 0) //ret < 0 if (c < root._ehdokas)
                {
                    // mennään vasemmalle
                    root = root.Left;
                }
                else
                {
                    root = root.Right;
                }
            }
            TreeNode newNode = new TreeNode(c);
            int      ret1    = c.Sukunimi.CompareTo(daddy._ehdokas.Sukunimi);

            //if (c < daddy.Data)
            if (ret1 < 0) //if (c. < daddy._ehdokas)
            {
                daddy.Left = newNode;
            }
            else
            {
                daddy.Right = newNode;
            }
        }
        // public static TreeNode Find(TreeNode t, char c)

        public static TreeNode Find(TreeNode t, Ehdokas c)
        {
            TreeNode node = null;

            while (t != null)
            {
                //if (c == t.Data)
                int ret = c.Sukunimi.CompareTo(t._ehdokas.Sukunimi);
                if (ret == 0)//if (c.Sukunimi == t._ehdokas.Sukunimi)
                {
                    //if Surnames are same, need to check names

                    // int ret_name = c.Etunimi.CompareTo(t._ehdokas.Etunimi);
                    //      if (ret_name == 0)

                    //          {
                    //               node = t;
                    //                break;

                    //   else if (ret_name < 0) //to be continued
                    //
                    //              {
                    //               t = t.Left;
                    //              }
                    //      else
                    //              {
                    //                 t = t.Right;
                    //               }
                    //          return node;
                    //              }
                    node = t;
                    break;
                }
                //else if (c < t.Data) //
                else if (ret < 0)  //CHECK IF IT <0 or >o
                {
                    t = t.Left;
                }
                else
                {
                    t = t.Right;
                }
            }

            return(node);
        }
示例#3
0
 public TreeNode(Ehdokas z)  //NEW 29.11
 {
     this._ehdokas = z;
 }
示例#4
0
        static void Main(string[] args)
        {
            Console.WriteLine("test_29.11.2019");
            // lista ehdokkaista
            List <Ehdokas> ehdokkaat =
                new List <Ehdokas>();

            // luetaan tiedosto https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/how-to-read-a-text-file-one-line-at-a-time

            int    counter = 0;
            string line;

            // Read the file and display it line by line.
            StreamReader file =
                new StreamReader(@"c:\temp\ehdokkaat.txt");

            // new StreamReader(@"C:\Users\Käyttäjä\Desktop\SEAMK\Tietorakeneet2019\ehdokkaat.txt");
            while ((line = file.ReadLine()) != null)
            {
                // Alpo	Kitinoja	KOK	223
                string[] osat = line.Split();

                string en        = osat[0];
                string sn        = osat[1];
                string puolue    = osat[2];
                int    aanimaara = int.Parse(osat[3]);
                // tehdään olio
                Ehdokas e = new Ehdokas(en, sn, puolue,
                                        aanimaara);
                // lisätään olio listaan
                ehdokkaat.Add(e);

                //Console.WriteLine(osat[0] + " " + osat[1]);
                counter++;
            }

            file.Close();
            // järjestetään lista
            //Basic sort by surname and name
            //ehdokkaat.Sort();


            //ehdokkaat.Sort(VertailuAaniMaaranMukaan.AanienMukaan());

            // käydään lista läpi

            /*
             *
             *  PRINTING
             *  foreach (var ehdokas in ehdokkaat)
             * {
             *    Console.WriteLine(ehdokas.Sukunimi);
             * }
             * Console.ReadLine();
             */

            //TREE



            //creating new tree
            Ehdokas  juuri1 = ehdokkaat[0];
            TreeNode juuri  = new TreeNode(juuri1);

            for (int i = 1; i < ehdokkaat.Count; i++) //starting from 2 juuri.count  [0]

            {
                //Tree.Insert(juuri, ehdokkaat[i]);
                Tree.Insert(juuri, ehdokkaat[i]);
            }

            Tree.traverse_inorder(juuri);
            Console.WriteLine();
            Console.WriteLine("TEST");
            Console.WriteLine();

            TreeNode h = Tree.Find(juuri, ehdokkaat[3]);   //TreeNode h = Tree.Find(juuri, 'h'); what to use instead of 'h'

            Console.WriteLine(h.ToString());



            Console.ReadLine();
        }