Advertisement
Josif_tepe

Untitled

Jun 26th, 2023
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.59 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3.  
  4. class BNode<E>{
  5.     public E info;
  6.     public BNode<E> left;
  7.     public BNode<E> right;
  8.     static int LEFT = 1;
  9.     static int RIGHT = 2;
  10.  
  11.     public BNode(E info){ // konstruktor so eden argument, samo info poleto
  12.         this.info = info;
  13.         this.left = null;
  14.         this.right = null;
  15.     }
  16.  
  17.     public BNode(E info, BNode<E> left, BNode<E> right){
  18.         this.info = info;
  19.         this.left = left;
  20.         this.right = right;
  21.     }
  22. }
  23. class BTree<E>{
  24.     public BNode<E> root;
  25.  
  26.     public BTree(){
  27.         root = null;
  28.     }
  29.  
  30.     public BTree(E info){
  31.         root = new BNode<E>(info);
  32.     }
  33.  
  34.     public BNode<E> addChild(BNode<E> Node, int where, E info){
  35.         BNode<E> temp = new BNode<E>(info);
  36.         if(where == BNode.LEFT){
  37.             if(Node.left != null){
  38.                 return null;
  39.             }
  40.             Node.left = temp;
  41.         }else{
  42.             if(Node.right !=null){
  43.                 return null;
  44.             }
  45.             Node.right = temp;
  46.         }
  47.         return temp;
  48.     }
  49.  
  50.     public void InorderR(BNode<E> r){
  51.         if(r!=null){
  52.             InorderR(r.left);
  53.             System.out.println(r.info.toString() + " ");
  54.             InorderR(r.right);
  55.         }
  56.     }
  57.  
  58.     public void Inorder(){
  59.         System.out.print("INORDER: ");
  60.         InorderR(root);
  61.         System.out.println();
  62.     }
  63.  
  64.     public void PreorderR(BNode<E> r){
  65.         if(r!=null) {
  66.             System.out.println(r.info.toString() + " ");
  67.             InorderR(r.left);
  68.             InorderR(r.right);
  69.         }
  70.     }
  71.  
  72.     public void Preorder(){
  73.         System.out.print("PREORDER: ");
  74.         PreorderR(root);
  75.         System.out.println();
  76.     }
  77.  
  78.     public void PostorderR(BNode<E> r){
  79.         if(r!=null) {
  80.             InorderR(r.left);
  81.             InorderR(r.right);
  82.             System.out.println(r.info.toString() + " ");
  83.         }
  84.     }
  85.  
  86.     public void PostorderR(){
  87.         System.out.print("POSTORDER: ");
  88.         PostorderR(root);
  89.         System.out.println();
  90.     }
  91.     int maximumHeightOfNode(BNode<E> node) {
  92.         if(node == null) {
  93.             return 0;
  94.         }
  95.         int leftSide = maximumHeightOfNode(node.left);
  96.         int rightSide = maximumHeightOfNode(node.right);
  97.         return Math.max(leftSide, rightSide) + 1;
  98.     }
  99.     int calculateDiameter(BNode<E> node) {
  100.         if(node == null) {
  101.             return 0;
  102.         }
  103.         int leftSide = maximumHeightOfNode(node.left);
  104.         int rightSide = maximumHeightOfNode(node.right);
  105.         int heightOfNode = leftSide + rightSide + 1; // eden od rezultatite
  106.  
  107.         int leftDiameter = calculateDiameter(node.left);
  108.         int rightDiameter = calculateDiameter(node.right);
  109.         int maxDiameter = Math.max(leftDiameter, rightDiameter);
  110.  
  111.         return Math.max(heightOfNode, maxDiameter);
  112.     }
  113.  
  114.  
  115.  
  116. }
  117.  
  118.  
  119. public class Main {
  120.     public static void main(String[] args) {
  121.         //BNode<Integer> root = new BNode<Integer>(10);
  122.         BTree<Integer> drvo = new BTree<Integer>(10);
  123.  
  124.         drvo.addChild(drvo.root, drvo.root.LEFT, 5);
  125.         drvo.addChild(drvo.root, drvo.root.RIGHT, 6);
  126.         drvo.addChild(drvo.root.left, drvo.root.left.LEFT, 7);
  127.         drvo.addChild(drvo.root.left, drvo.root.left.RIGHT, 9);
  128.         drvo.addChild(drvo.root.right, drvo.root.right.RIGHT, 8);
  129.         drvo.addChild(drvo.root.left.left, drvo.root.left.left.LEFT, 5);
  130.  
  131. //        drvo.InorderR(drvo.root);
  132.         // int i= drvo.numLeaves1(drvo.root);
  133.  
  134.         System.out.println(drvo.calculateDiameter(drvo.root));
  135.  
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement