Разработать таблицу имен, обеспечивающую динамическое выделение памяти под имена по мере надобности - C#

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Разработать таблицу имен, обеспечивающую динамическое выделение памяти под имена по мере надобности»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
 
namespace ConsoleApplication3
{
    public class Tree : IEnumerable<Tree>
    {
        public Tree Left { get; set; }
        public Tree Right { get; set; }
        public string Value { get; set; }
 
        public Tree() { }
 
        public Tree(string node)
        {
            Value = node;
        }
 
        public void Add(string Value)
        {
            if (this.Value == null)
                this.Value = Value;
            else
            {
                if (this.Value.CompareTo(Value) < 0)
                    if (Left != null)
                        Left.Add(Value);
                    else
                        Left = new Tree(Value);
                if (this.Value.CompareTo(Value) > 0)
                    if (Right != null)
                        Right.Add(Value);
                    else
                        Right = new Tree(Value);
            }
        }
 
        #region IEnumerable
 
        private IEnumerable<Tree> Across(Tree node)
        {
            if (node != null)
            {
                Queue<Tree> spisok = new Queue<Tree>();
                spisok.Enqueue(node);
                while (spisok.Count > 0)
                {
                    var x = spisok.Peek();
                    if (x.Left != null)
                        spisok.Enqueue(x.Left);
                    if (x.Right != null)
                        spisok.Enqueue(x.Right);
                    yield return spisok.Dequeue();
                }
            }
        }
 
        public IEnumerator<Tree> GetEnumerator()
        {
            foreach (var i in Across(this))
                yield return i;
        }
 
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
 
        #endregion
    }
 
    class Program
    {
        static void Main()
        {
            Tree tr = new Tree();
            tr.Add("F");
            tr.Add("B");
            tr.Add("H");
            tr.Add("A");
            tr.Add("D");
            tr.Add("G");
            tr.Add("N");
            foreach (var i in tr)
                Console.WriteLine(i.Value);
            Console.ReadLine();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы