All pastes #353442 Raw Edit

Mine

public java v1 · immutable
·published 2007-02-13 11:12 UTC
rendered paste body
public class exercises{  public static void printTree(TreeNode root)  {    if(root == null)      return;    System.out.print(root.getValue() + " ");    printTree(root.getLeft());    printTree(root.getRight());  }  public static boolean isLeaf(TreeNode node)  {    return node != null && node.getLeft() == null            && node.getRight() == null;  }  public static int sumTree(TreeNode root)  {    if(root == null)      return 0;    return ((Integer)root.getValue()).intValue()           + sumTree(root.getLeft())           + sumTree(root.getRight());  }  public static int countPaths(TreeNode root)  {    if(root == null)      return 0;    int sum = 0;    if(root.getLeft() != null)      sum += 1 + countPaths(root.getLeft());    if(root.getRight() != null)      sum += 1 + countPaths(root.getRight());    return sum;  }  public static int depth(TreeNode root)  {    if(root == null)      return 0;    return Math.max(1 + depth(root.getLeft()),                    1 + depth(root.getRight()));  }  public static int countNodes(TreeNode root)  {    if(root == null)      return 0;    return 1 + countNodes(root.getLeft()) +            countNodes(root.getRight());  }  public static double bushRatio(TreeNode root)  {    if(root == null)      return 0.;    return countNodes(root) /            (Math.pow(2., depth(root)) - 1.);  }  public static TreeNode copy(TreeNode root)  {    if(root == null)      return null;    return new TreeNode(root.getValue(),                         copy(root.getLeft()),                        copy(root.getRight()));  }  public static TreeNode mirrorImage(TreeNode root)  {    if(root == null)      return null;    return new TreeNode(root.getValue(),                         mirrorImage(root.getRight()),                        mirrorImage(root.getLeft()));  }  public static boolean sameShape(TreeNode root1,                                   TreeNode root2)  {    if(root1 == null && root2 == null)      return true;    if((root1 == null && root2 != null) ||       (root1 != null && root2 == null))      return false;    return sameShape(root1.getLeft(), root2.getLeft()) &&           sameShape(root1.getRight(), root2.getRight());  }  public static boolean hasSameSubtree(TreeNode root1,                                        TreeNode root2)  {    if(root2 == null)      return true;    if(root1 == null)      return false;    if(sameShape(root1,root2))      return true;    return sameShape(root1.getLeft(),root2) ||            sameShape(root1.getRight(),root2);   }  public static TreeNode buildFull(int h)  {    if(h == 0)      return null;    return new TreeNode(null, buildFull(h-1), buildFull(h-1));  }  public static void main()  {    TreeNode n6 = new TreeNode(6),             n5 = new TreeNode(5),             n4 = new TreeNode(4),             n3 = new TreeNode(3, n6, null),             n2 = new TreeNode(2, n4, n5),             n1 = new TreeNode(1, n2, n3);    printTree(n1);    System.out.println("\nisLeaf(n5) = " + isLeaf(n5));    System.out.println("isLeaf(n1) = " + isLeaf(n1));    System.out.println("sumTree(n1) = " + sumTree(n1));    System.out.println("countPaths(n1) = " + countPaths(n1));    System.out.println("depth(n1) = " + depth(n1));    System.out.println("countNodes(n1) = " + countNodes(n1));    System.out.println("bushRatio(n1) = " + bushRatio(n1));    System.out.print("copy(n1) = ");    printTree(copy(n1));    System.out.print("\nmirrorImage(n1) = ");    printTree(mirrorImage(n1));    System.out.println("\nsameShape(n1, n1) = " + sameShape(n1, n1));    System.out.println("sameShape(n2, n3) = " + sameShape(n2, n3));    System.out.println("hasSameSubtree(n1, n2) = " + hasSameSubtree(n1, n2));    System.out.println("hasSameSubtree(n2, n3) = " + hasSameSubtree(n2, n3));  }}