Advertisement
Guest User

Untitled

a guest
May 24th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.92 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5.  
  6.  
  7. class TreeNode
  8. {
  9.     private int data;
  10.    private TreeNode left;
  11.     private TreeNode right;
  12.      boolean isEmpty;
  13.  
  14.     public TreeNode getRight() {
  15.         return right;
  16.     }
  17.  
  18.     public TreeNode getLeft() {
  19.         return left;
  20.     }
  21.  
  22.     public int getData() {
  23.         return data;
  24.     }
  25.  
  26.     public void setRight(TreeNode right) {
  27.         this.right = right;
  28.     }
  29.  
  30.     public void setLeft(TreeNode left) {
  31.         this.left = left;
  32.     }
  33.  
  34.     public void setData(int data) {
  35.         this.data = data;
  36.         this.isEmpty = false;
  37.     }
  38.     public TreeNode()
  39.     {
  40.         this.data = 0;
  41.         this.left = null;
  42.         this.right = null;
  43.         isEmpty = true;
  44.     }
  45.  
  46.     @Override
  47.     public String toString() {
  48.         return "Значение данных этой ноды равно: " + data;
  49.     }
  50. }
  51.  
  52. public class TreeContainer {
  53.     private TreeNode head;
  54.     private int count;
  55.  
  56.     public TreeContainer(){
  57.         this.head = null;
  58.         this.count = 0;
  59.     }
  60.  
  61.     public void setCount(int count) {
  62.         this.count = count;
  63.     }
  64.  
  65.     public void setHead(TreeNode head) {
  66.         this.head = head;
  67.     }
  68.  
  69.     public int getCount() {
  70.         return count;
  71.     }
  72.  
  73.     public TreeNode getHead() {
  74.         return head;
  75.     }
  76.     public void countIncr()
  77.     {
  78.         this.count++;
  79.     }
  80.  
  81.     public boolean bin_search(TreeContainer searchTree, int item)
  82.     {
  83.         TreeNode searchNode = new TreeNode();
  84.         searchNode = searchTree.getHead();
  85.         for(;;)
  86.         {
  87.             if(searchNode == null) return false;
  88.             else if(item == searchNode.getData()) return true;
  89.             else if(item > searchNode.getData()) searchNode = searchNode.getRight();
  90.             else searchNode = searchNode.getLeft();
  91.         }
  92.     }
  93.  
  94.     public static void insert(TreeContainer searchTree, int item)
  95.     {
  96.         TreeNode searchNode = searchTree.getHead();
  97.         TreeNode tempNode = searchTree.getHead();
  98.         if(searchNode == null)
  99.         {
  100.             TreeNode temp = new TreeNode();
  101.             temp.setData(item);
  102.             temp.setLeft(null);
  103.             temp.setRight(null);
  104.             searchTree.setHead(temp);
  105.             return;
  106.         }
  107.         while(true)
  108.         {
  109.             if(searchNode.isEmpty)
  110.             {
  111.                     searchNode.setData(item);
  112.                     searchNode.setLeft(null);
  113.                     searchNode.setRight(null);
  114.                     searchTree.countIncr();
  115.                     return;
  116.             }
  117.  
  118.             else if(item == searchNode.getData())
  119.                 return;
  120.             else if(item > searchNode.getData())
  121.             {
  122.                 tempNode = searchNode;
  123.                 searchNode = searchNode.getRight();
  124.                 if(searchNode == null)
  125.                     searchNode = new TreeNode();
  126.                 tempNode.setRight(searchNode);
  127.             }
  128.             else if(item < searchNode.getData())
  129.             {
  130.                 tempNode = searchNode;
  131.                 searchNode = searchNode.getLeft();
  132.                 if(searchNode == null)
  133.                     searchNode = new TreeNode();
  134.                 tempNode.setLeft(searchNode);
  135.             }
  136.         }
  137.  
  138.     }
  139.  
  140.     public TreeNode searchForElem(TreeNode head, int item)
  141.     {
  142.         TreeNode finalAnswer = new TreeNode();
  143.         if(head == null) return null;
  144.         else if(item == head.getData()) {
  145.             System.out.println("Я на самом деле жив");
  146.             return head;
  147.         }
  148.         else if(item > head.getData())
  149.         {
  150.             finalAnswer = searchForElem(head.getRight(),item);
  151.         }
  152.         else if(item < head.getData());
  153.             finalAnswer = searchForElem(head.getLeft(),item);
  154.         System.out.println("Какого-то хуя меня вызвали");
  155.         return finalAnswer;
  156.     }
  157.  
  158.      public void delete(int item)
  159.     {
  160.         boolean isFound = false;
  161.         TreeNode temp = head;
  162.         TreeNode father = new TreeNode();
  163.         while(!isFound)
  164.         {
  165.             if(temp == null) return;
  166.             else if(temp.getData() == item)
  167.             {
  168.                 isFound = true;
  169.             }
  170.             else if(temp.getData() > item)
  171.             {
  172.                 father = temp;
  173.                 temp = temp.getLeft();
  174.             }
  175.             else if(temp.getData() < item)
  176.             {
  177.                 father = temp;
  178.                 temp = temp.getRight();
  179.             }
  180.         }
  181.         temp.setData(-7547);
  182.         count--;
  183.         return;
  184.     }
  185.  
  186.     static public void walk(TreeNode searchNode)
  187.     {
  188.         if(searchNode == null){
  189.             return;
  190.         }
  191.         walk(searchNode.getLeft());
  192.         if(searchNode.getData() != -7547)
  193.             System.out.println(searchNode.getData());
  194.         walk(searchNode.getRight());
  195.     }
  196.  
  197.     static void walk2(TreeContainer myTree)
  198.     {
  199.         walk(myTree.getHead());
  200.     }
  201.  
  202.     static void destroy(TreeNode searchNode)
  203.     {
  204.         if(searchNode == null) return;
  205.         destroy(searchNode.getLeft());
  206.         destroy(searchNode.getRight());
  207.     }
  208.     void destroy(TreeContainer searchTree)
  209.     {
  210.         destroy(searchTree.getHead());
  211.     }
  212.  
  213.     public static TreeNode treeMinimum(TreeContainer searchTree)
  214.     {
  215.         TreeNode  searchNode = searchTree.getHead();
  216.         while(searchNode.getLeft() != null)
  217.             searchNode = searchNode.getLeft();
  218.         return searchNode;
  219.     }
  220.  
  221.     public static TreeNode treeMaximum (TreeContainer searchTree)
  222.     {
  223.         TreeNode searchNode;
  224.         searchNode = searchTree.getHead();
  225.         while(searchNode.getRight() != null)
  226.             searchNode = searchNode.getRight();
  227.         return searchNode;
  228.     }
  229.  
  230.     boolean isBST(TreeContainer searchTree)
  231.     {
  232.         return(isBSTUtil(searchTree.getHead(),treeMinimum(searchTree).getData(),treeMaximum(searchTree).getData()));
  233. }
  234.     public boolean isBSTUtil(TreeNode node, int min,int max)
  235.     {
  236.         if(node == null) return true;
  237.         if(node.getData()<min || node.getData()>max) return false;
  238.         return(isBSTUtil(node.getLeft(),min,node.getData()) && isBSTUtil(node.getRight(),node.getData()+1,max));
  239.     }
  240.  
  241.     public static void main(String[] args) throws IOException {
  242.         TreeContainer tc = new TreeContainer();
  243.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  244.         System.out.println("Введите 10 элементов в дерево");
  245.  
  246.         for(int i = 0;i<10;i++) {
  247.             insert(tc, Integer.parseInt(reader.readLine()));
  248.         }
  249.         walk2(tc);
  250.         System.out.println("Выберите элемент, который хотите удалить");
  251.         tc.delete(Integer.parseInt(reader.readLine()));
  252.         walk2(tc);
  253.  
  254.     }
  255. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement