Advertisement
Guest User

CS132 Quiz 4 Worksheet Version 5

a guest
Nov 20th, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.79 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.TreeMap;
  3.  
  4. public class Quiz_4<K extends Comparable<K>, V> {
  5.     private class Node {
  6.         private K key;
  7.         private V data;
  8.         private Node left, right;
  9.  
  10.         public Node(K key, V data) {
  11.             this.key = key;
  12.             this.data = data;
  13.         }
  14.     }
  15.  
  16.     private Node root;
  17.  
  18.     public Quiz_4() {
  19.         root = null;
  20.     }
  21.  
  22.     public void add(K key, V data) {
  23.         root = addAux(key, data, root);
  24.     }
  25.  
  26.     public Node addAux(K key, V data, Node tree) {
  27.         if (tree == null) {
  28.             return new Node(key, data);
  29.         }
  30.         if (key.compareTo(tree.key) == 0) {
  31.             tree.data = data;
  32.             return tree;
  33.         }
  34.         if (key.compareTo(root.key) < 0) {
  35.             tree.left = addAux(key, data, tree.left);
  36.             return tree;
  37.         }
  38.         tree.right = addAux(key, data, tree.right);
  39.         return tree;
  40.     }
  41.  
  42.     public int size() {
  43.         return sizeAux(root);
  44.     }
  45.  
  46.     public int sizeAux(Node tree) {
  47.         return tree == null ? 0 : 1 + sizeAux(tree.right) + sizeAux(tree.left);
  48.     }
  49.  
  50.     public V maxNonRec() {
  51.         if (root == null) {
  52.             return null;
  53.         }
  54.         Node n = root;
  55.         while (n.right != null) {
  56.             n = n.right;
  57.         }
  58.         return n.data;
  59.     }
  60.  
  61.     public V max() {
  62.         return root == null ? null : maxAux(root);
  63.     }
  64.  
  65.     public V maxAux(Node tree) {
  66.         return tree.right == null ? tree.data : maxAux(tree.right);
  67.     }
  68.  
  69.     public V min() {
  70.         return root == null ? null : minAux(root);
  71.     }
  72.  
  73.     public V minAux(Node tree) {
  74.         return tree.left == null ? tree.data : minAux(tree.left);
  75.     }
  76.  
  77.     public String postOrderTraversal() {
  78.         return postAux(root);
  79.     }
  80.  
  81.     public String postAux(Node tree) {
  82.         return tree == null ? "" : postAux(tree.left) + postAux(tree.right) + tree.key;
  83.     }
  84.  
  85.     public int getNumInteriorNodes() {
  86.         return interiorAux(root);
  87.     }
  88.  
  89.     public int interiorAux(Node tree) {
  90.         if(tree == null) {
  91.             return 0;
  92.         }
  93.         return tree.right == null && tree.left == null ? 0 : 1 + interiorAux(tree.right) + interiorAux(tree.left);
  94.     }
  95.  
  96.     public int getHeight() {
  97.         return heightAux(root);
  98.     }
  99.  
  100.     public int heightAux(Node tree) {
  101.         return tree == null ? 0 : 1 + Math.max(heightAux(tree.left), heightAux(tree.right));
  102.     }
  103.  
  104.     public void leaves(ArrayList<K> L) {
  105.         L = leavesAux(root, L);
  106.     }
  107.  
  108.     public ArrayList<K> leavesAux(Node tree, ArrayList<K> list) {
  109.         if(tree == null) {
  110.             return list;
  111.         }
  112.         if (tree.left == null && tree.right == null) {
  113.             list.add(tree.key);
  114.             return list;
  115.         }
  116.         list = leavesAux(tree.left, list);
  117.         list = leavesAux(tree.right, list);
  118.         return list;
  119.     }
  120.  
  121.     public ArrayList<V> getDecreasingOrderList() {
  122.         ArrayList<V> list = new ArrayList<V>();
  123.         return decreasingListAux(root, list);
  124.     }
  125.  
  126.     public ArrayList<V> decreasingListAux(Node tree, ArrayList<V> list) {
  127.         if (tree == null) {
  128.             return list;
  129.         }
  130.         list = decreasingListAux(tree.right, list);
  131.         list.add(tree.data);
  132.         list = decreasingListAux(tree.left, list);
  133.         return list;
  134.     }
  135.  
  136.     public void getDataOneChildNodes(ArrayList<V> L) {
  137.         L = oneChildPolicy(root, L);
  138.     }
  139.  
  140.     public ArrayList<V> oneChildPolicy(Node tree, ArrayList<V> L) {
  141.         if (tree != null) {
  142.             if (tree.left == null ^ tree.right == null) {
  143.                 L.add(tree.data);
  144.             }
  145.             L = oneChildPolicy(tree.left, L);
  146.             L = oneChildPolicy(tree.right, L);
  147.         }
  148.         return L;
  149.     }
  150.  
  151.     public ArrayList<K> getKeyNodesAtLevel(int targetLevel) {
  152.         ArrayList<K> list = new ArrayList<K>();
  153.         return nodesAtLevelAux(targetLevel, root, list);
  154.     }
  155.  
  156.     public ArrayList<K> nodesAtLevelAux(int level, Node tree, ArrayList<K> list) {
  157.         if (tree == null) {
  158.             return list;
  159.         }
  160.         if(level == 1) {
  161.             list.add(tree.key);
  162.             return list;
  163.         }
  164.         list = nodesAtLevelAux(level-1, tree.right, list);
  165.         list = nodesAtLevelAux(level-1, tree.left, list);
  166.         return list;
  167.     }
  168.     public TreeMap<K,V> placeKeysValues() {
  169.         TreeMap<K,V> map = new TreeMap<K,V>();
  170.         return placeKeysValuesAux(root, map);
  171.     }
  172.     public TreeMap<K,V> placeKeysValuesAux(Node tree, TreeMap<K,V> map) {
  173.         if(tree == null) {
  174.             return map;
  175.         }
  176.         map = placeKeysValuesAux(tree.left, map);
  177.         map.put(tree.key,tree.data);
  178.         map = placeKeysValuesAux(tree.right, map);
  179.         return map;
  180.     }
  181.     public static void main(String[] args) {
  182.         Quiz_4<Integer, String> tree = new Quiz_4<Integer,String>();
  183.         System.out.println("tree "+tree.postOrderTraversal());
  184.         tree.add(1, "1");
  185.         System.out.println("tree "+tree.postOrderTraversal());
  186.         tree.add(2, "2");
  187.         System.out.println("tree "+tree.postOrderTraversal());
  188.         tree.add(3, "3");
  189.         System.out.println("tree "+tree.postOrderTraversal());
  190.         tree.add(4, "4");
  191.         System.out.println("tree "+tree.postOrderTraversal());
  192.         tree.add(10, "10");
  193.         System.out.println("tree "+tree.postOrderTraversal());
  194.         tree.add(0, "0");
  195.         System.out.println("tree "+tree.postOrderTraversal());
  196.         System.out.println(tree.size());
  197.         ArrayList<Integer> list = new ArrayList<Integer>();
  198.         tree.leaves(list);
  199.         System.out.println(list);
  200.     }
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement