Question: need help with this. IntTree.java with the following methods added: A. slightStutter(); a public non-recursive method that changes this tree to add stutter nodes on
need help with this. IntTree.java with the following methods added:
A. slightStutter(); a public non-recursive method that changes this tree to add stutter nodes on the left when possible, otherwise add a stutter node on the right, but if both left and right are not null then the node cannot be stuttered. See example below.
B. slightStutter(IntTreeNode root); a private recursive method helper, returns an IntTreeNode, that does the tree traversal and modification for public slightStutter You can use : IntTree.javaPreview the documentView in a new window I will also use IntTreeNode.javaPreview the documentView in a new window as is, no changes.
At the very bottom I have the test code.
import java.util.*;
public class IntTree {
private IntTreeNode overallRoot;
// pre : max > 0
// post: constructs a sequential tree with given number of
// nodes
public IntTree(int max) {
if (max <= 0) {
throw new IllegalArgumentException("max: " + max);
}
overallRoot = buildTree(1, max);
}
public IntTree() {
overallRoot = null;
}
// constructor added so we can build page 1029 reference trees
public IntTree(IntTreeNode given) {
overallRoot = given;
}
//Exercise #7, Chapter 17
public boolean isFull() {
return (overallRoot == null || isFull(overallRoot));
}
private boolean isFull(IntTreeNode root) {
if(root.left == null && root.right == null) {
return true;
} else {
return (root.left != null && root.right != null && isFull(root.left) && isFull(root.right));
}
}
// post: returns a sequential tree with n as its root unless
// n is greater than max, in which case it returns an
// empty tree
private IntTreeNode buildTree(int n, int max) {
if (n > max) {
return null;
} else {
return new IntTreeNode(n, buildTree(2 * n, max),
buildTree(2 * n + 1, max));
}
}
// post: prints the tree contents using a preorder traversal
public void printPreorder() {
System.out.print("preorder:");
printPreorder(overallRoot);
System.out.println();
}
// post: prints the tree contents using a preorder traversal
// post: prints in preorder the tree with given root
private void printPreorder(IntTreeNode root) {
if (root != null) {
System.out.print(" " + root.data);
printPreorder(root.left);
printPreorder(root.right);
}
}
// post: prints the tree contents using a inorder traversal
public void printInorder() {
System.out.print("inorder:");
printInorder(overallRoot);
System.out.println();
}
// post: prints in inorder the tree with given root
private void printInorder(IntTreeNode root) {
if (root != null) {
printInorder(root.left);
System.out.print(" " + root.data);
printInorder(root.right);
}
}
// post: prints the tree contents using a postorder traversal
public void printPostorder() {
System.out.print("postorder:");
printPostorder(overallRoot);
System.out.println();
}
// post: prints in postorder the tree with given root
private void printPostorder(IntTreeNode root) {
if (root != null) {
printPostorder(root.left);
printPostorder(root.right);
System.out.print(" " + root.data);
}
}
// post: prints the tree contents, one per line, following an
// inorder traversal and using indentation to indicate
// node depth; prints right to left so that it looks
// correct when the output is rotated.
public void printSideways() {
printSideways(overallRoot, 0);
}
// post: prints in reversed preorder the tree with given
// root, indenting each line to the given level
private void printSideways(IntTreeNode root, int level) {
if (root != null) {
printSideways(root.right, level + 1);
for (int i = 0; i < level; i++) {
System.out.print(" ");
}
System.out.println(root.data);
printSideways(root.left, level + 1);
}
}
public class IntTreeNode {
public int data;
public IntTreeNode left;
public IntTreeNode right;
// constructs a leaf node with given data
public IntTreeNode(int data) {
this(data, null, null);
}
// constructs a branch node with given data, left subtree,
// right subtree
public IntTreeNode(int data, IntTreeNode left,
IntTreeNode right) {
this.data = data;
this.left = left;
this.right = right;
}
}
public class Post {
public static void main(String[] args) {
IntTree tree =
new IntTree(new IntTreeNode(9,new IntTreeNode(8),new IntTreeNode(7)));
tree.printSideways();
tree.slightStutter();
System.out.println("---------------------------------");
tree.printSideways();
}
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
