Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program.cs
- using System;
- using System.IO;
- namespace test
- {
- class Program
- {
- public static void Main (string[] args)
- {
- BinaryTree myTree = new BinaryTree ();
- using (StreamReader fileIn = new StreamReader ("/Users/masha/Projects/test/test/input.txt"))
- {
- string line = fileIn.ReadToEnd ();
- string[] mas = line.Split (' ');
- foreach (string item in mas)
- myTree.Add (int.Parse(item));
- myTree.Preorder();
- foreach (string inf in mas)
- {
- if (int.Parse(inf) % 2 == 1)
- myTree.Delete(int.Parse(inf));
- }
- Console.WriteLine();
- myTree.Preorder ();
- }
- }
- }
- }
- ____________________________________________________________________________________________________________________________________________________
- BinaryTree.cs
- using System;
- namespace test
- {
- public class BinaryTree
- {
- //вложенный класс, отвечающий за узлы и операции для дерева
- public class Node
- {
- public object inf;
- public Node left;
- public Node right;
- public Node parent;
- public static Node root;
- //создание узла
- public Node (object nodeInf)
- {
- this.inf = nodeInf;
- left = null;
- right = null;
- parent = null;
- }
- //добавление узла согласно определению бин. дерева
- public static void Add(ref Node r, object nodeInf)
- {
- if (r == null)
- {
- r = new Node (nodeInf);
- }
- else
- {
- if (((IComparable)(r.inf)).CompareTo (nodeInf) > 0)
- {
- Add (ref r.left, nodeInf);
- r.left.parent = r;
- }
- else if (((IComparable)(r.inf)).CompareTo (nodeInf) <= 0)
- {
- Add (ref r.right, nodeInf);
- r.right.parent = r;
- }
- else if (r.parent == null)
- root = r;
- }
- }
- //удаление
- private static void Del(Node t, ref Node node)
- {
- if (node.right != null)
- {
- Del (t, ref node.right);
- }
- else
- {
- t.inf = node.inf;
- node = node.left;
- }
- }
- public static void Delete (ref Node node, object key)
- {
- if (node == null)
- throw new Exception ("Exeption");
- else
- {
- if (((IComparable)(node.inf)).CompareTo (key) > 0)
- Delete (ref node.left, key);
- else if (((IComparable)(node.inf)).CompareTo (key) < 0)
- Delete (ref node.right, key);
- else
- {
- if (node.left == null)
- node = node.right;
- else if (node.right == null)
- node = node.left;
- else if (node.right != null && node.left != null)
- Del (node, ref node.left);
- }
- }
- }
- public static void Preorder (Node r)
- {
- if (r != null)
- {
- Console.Write ("{0} ", r.inf);
- Preorder (r.left);
- Preorder (r.right);
- }
- }
- public static void Search (Node r, object key, out Node inf)
- {
- if (r == null)
- inf = null;
- else if (((IComparable)(r.inf)).CompareTo (key) == 0)
- inf = r;
- else if (((IComparable)(r.inf)).CompareTo (key) > 0)
- Search (r.left, key, out inf);
- else
- Search (r.right, key, out inf);
- }
- }
- //конец вложенного класса
- Node tree;
- public Node Tree
- {
- get{return tree;}
- }
- public object Inf
- {
- set{tree.inf = value;}
- get{return tree.inf;}
- }
- public BinaryTree()
- {
- tree = null;
- }
- private BinaryTree (Node r)
- {
- tree = r;
- }
- public void Add(object nodeInf)
- {
- Node.Add (ref tree, nodeInf);
- }
- public void Delete(object key)
- {
- Node.Delete (ref tree, key);
- }
- public void Preorder()
- {
- Node.Preorder (tree);
- }
- public BinaryTree Search(object key)
- {
- Node node;
- Node.Search (tree, key, out node);
- BinaryTree binaryTree = new BinaryTree (node);
- return binaryTree;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment