Ryan
BAN USERpublic void connectSameLevelNodes() {
if (root == null) {
return;
}
int maxDepth = findMaxDepth(root, 0);
System.out.println("MAX DEPTH " + maxDepth);
for (int i = 1; i < maxDepth; i++) {
connectNodesOnSameLevel(root, 0, i, null);
}
}
private Node connectNodesOnSameLevel(Node root, int currentDepth, int level, Node previousNode) {
if (root == null) {
return previousNode;
}
if (currentDepth == level) {
if (previousNode == null) {
return root;
} else {
previousNode.nextRight = root;
return root;
}
} else {
Node left = connectNodesOnSameLevel(root.left, currentDepth + 1, level, previousNode);
previousNode = connectNodesOnSameLevel(root.right, currentDepth + 1, level, left == null ? previousNode : left);
}
return previousNode;
}
private int findMaxDepth(Node root, int depth) {
if (root == null) {
return depth;
}
return Math.max(findMaxDepth(root.left, depth + 1), findMaxDepth(root.right, depth + 1));
}
public void printNDigitsOfRationalNumber(int numerator, int denominator, int digits) {
String stringRep = (numerator / (double) denominator) + "";
int dotIndex = stringRep.indexOf(".");
String output = stringRep.substring(0, dotIndex);
for (int i = dotIndex, j = 0; i < stringRep.length() && j <= digits; i++, j++) {
output += stringRep.charAt(i);
}
System.out.println("Output: " + output);
}
- Ryan June 01, 2015
- Ryan October 15, 2015