Bob103

C#_Tree(II-2)

Feb 17th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.93 KB | None | 0 0
  1. public class BinaryTree
  2.     {
  3.         public class Node
  4.         {
  5.  
  6.             public object inf; //информационное поле
  7.             public Node left; //ссылка на левое поддерево
  8.             public Node rigth; //ссылка на правое поддерево
  9.  
  10.             //конструктор вложенного класса, создает узел дерева
  11.             public Node(object nodeInf)
  12.             {
  13.                 inf = nodeInf;
  14.                 left = null;
  15.                 rigth = null;
  16.             }
  17.  
  18.             //добавляет узел в дерево так, чтобы дерево оставалось деревом бинарного поиска
  19.             public static void Add(ref Node r, object nodeInf)
  20.             {
  21.                 if (r == null)
  22.                 {
  23.                     r = new Node(nodeInf);
  24.                 }
  25.                 else
  26.                 {
  27.                     if (((IComparable)(r.inf)).CompareTo(nodeInf) > 0)
  28.                     {
  29.                         Add(ref r.left, nodeInf);
  30.                     }
  31.                     else
  32.                     {
  33.                         Add(ref r.rigth, nodeInf);
  34.                     }
  35.                 }
  36.             }
  37.  
  38.             public static void Preorder(Node r) //прямой обход дерева
  39.             {
  40.                 if (r != null)
  41.                 {
  42.                     Console.Write("{0} ", r.inf);
  43.                     Preorder(r.left);
  44.                     Preorder(r.rigth);
  45.                 }
  46.             }
  47.  
  48.             public int getNodeHeight()
  49.             {
  50.                 int leftHeight = left == null ? 0 : left.getNodeHeight();
  51.                 int rightHeight = rigth == null ? 0 : rigth.getNodeHeight();
  52.                  Console.WriteLine(1 + Math.Max(leftHeight, rightHeight));
  53.                 return 1 + Math.Max(leftHeight, rightHeight);
  54.             }
  55.         }
  56.  
  57.         Node tree; //ссылка на корень дерева
  58.         //свойство позволяет получить доступ к значению информационного поля корня дерева
  59.         public object Inf
  60.         {
  61.             set
  62.             {
  63.                 tree.inf = value;
  64.             }
  65.             get
  66.             {
  67.                 return tree.inf;
  68.             }
  69.         }
  70.  
  71.         public BinaryTree()
  72.         {
  73.             tree = null;
  74.         }
  75.  
  76.         private BinaryTree(Node r)
  77.         {
  78.             tree = r;
  79.         }
  80.  
  81.         public void Add(object nodeInf) //добавление узла в дерево
  82.         {
  83.             Node.Add(ref tree, nodeInf);
  84.         }
  85.  
  86.         public int GetHeight()
  87.         {
  88.            
  89.            
  90.             return tree == null ? 0 : tree.getNodeHeight();
  91.         }
  92.  
  93.         public void Preorder()
  94.         {
  95.             Node.Preorder(tree);
  96.         }
  97.  
  98.     }
Advertisement
Add Comment
Please, Sign In to add comment