Advertisement
add1ctus

BinartyTreev2

Nov 25th, 2015
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.01 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. class BNode<E extends Comparable<E>> {
  6.  
  7.     public E info;
  8.     public BNode<E> left;
  9.     public BNode<E> right;
  10.  
  11.     static int LEFT = 1;
  12.     static int RIGHT = 2;
  13.  
  14.     public BNode(E info) {
  15.         this.info = info;
  16.         left = null;
  17.         right = null;
  18.     }
  19.  
  20.     public BNode() {
  21.         this.info = null;
  22.         left = null;
  23.         right = null;
  24.     }
  25.  
  26.     public BNode(E info, BNode<E> left, BNode<E> right) {
  27.         this.info = info;
  28.         this.left = left;
  29.         this.right = right;
  30.     }
  31.  
  32. }
  33.  
  34. class BTree<E extends Comparable<E>>  {
  35.  
  36.     public BNode<E> root;
  37.  
  38.     public BTree() {
  39.         root = null;
  40.     }
  41.  
  42.     public BTree(E info) {
  43.         root = new BNode<E>(info);
  44.     }
  45.  
  46.     public void makeRoot(E elem) {
  47.         root = new BNode(elem);
  48.     }
  49.    
  50.      public void printTreeInorder() {
  51.         if (root != null) {
  52.             printTreeInorder(root);        
  53.         }
  54.     }
  55.    
  56.      private void printTreeInorder(BNode<E> t) {
  57.         if (t != null) {
  58.             printTreeInorder(t.left);
  59.             System.out.println(t.info);
  60.             printTreeInorder(t.right);
  61.         }
  62.     }
  63.  
  64.       public BNode<E> addNode(BNode<E> parent, int where, BNode<E> child)
  65.       {
  66.          
  67.           if(where == BNode.LEFT)
  68.           {
  69.               if(parent.left == null)
  70.                   parent.left = child;
  71.               else
  72.                   return null;
  73.           }
  74.           else
  75.           {
  76.               if(parent.right == null)
  77.                   parent.right = child;
  78.               else
  79.                   return null;
  80.           }
  81.           return child;
  82.        
  83.          
  84.       }
  85.      
  86.       int numNodes(BNode <E> node)
  87.       {
  88.           if (node == null)
  89.               return 0;
  90.           return 1 + numNodes(node.left) + numNodes(node.right);
  91.       }
  92.      
  93.       public BNode <E> find (BNode <E> r,E el)
  94.       {
  95.           if(r.info == el)
  96.               return r;
  97.           BNode<E> result = new BNode<E>();
  98.           if(r.left != null)
  99.               result = find(r.left,el);
  100.           if(result != null)
  101.               return result;
  102.           if(r.right != null)
  103.               result = find(r.right,el);
  104.              return result;
  105.       }
  106.      
  107.       int dedoVnuk(BNode <E> r)
  108.       {
  109.            int result = 0;
  110.            if(r.left != null)
  111.            {
  112.                if(r.left.left != null)
  113.                    ++result;
  114.                if(r.left.right != null)
  115.                    ++result;
  116.                result += dedoVnuk(r.left);
  117.            }
  118.            if(r.right != null)
  119.            {
  120.                if(r.right.left != null)
  121.                    ++result;
  122.                if(r.right.right != null)
  123.                    ++result;
  124.                result += dedoVnuk(r.right);
  125.            }
  126.            return result;
  127.       }
  128.      
  129.  
  130. }
  131. public class BinaryTreev2 {
  132.  
  133.     public static void main(String[] args) throws IOException {
  134.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));          
  135.  
  136.         int N = Integer.parseInt(br.readLine());
  137.         BNode<String> nodes[] = new BNode[N];
  138.         BTree<String> tree  = new BTree();
  139.        
  140.         String [] niza = br.readLine().split(" ");
  141.         nodes[Integer.parseInt(niza[0])] = new BNode<String> (niza[1]);
  142.         tree.root = nodes[Integer.parseInt(niza[0])];
  143.        
  144.         for(int i = 1; i < N; i++)
  145.         {
  146.             niza = br.readLine().split(" ");
  147.             nodes[Integer.parseInt(niza[0])] = new BNode <String> (niza[1]);
  148.             if(niza[2].equals("LEFT"))
  149.                 tree.addNode(nodes[Integer.parseInt(niza[3])], BNode.LEFT, nodes[Integer.parseInt(niza[0])]);
  150.             else
  151.                 tree.addNode(nodes[Integer.parseInt(niza[3])], BNode.RIGHT, nodes[Integer.parseInt(niza[0])]);
  152.         }    
  153.        
  154.         tree.printTreeInorder();
  155.        
  156.         System.out.println("Brojot na jazli vo drvoto e "+ tree.numNodes(tree.root));
  157.        
  158.     }
  159.    
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement