public void findMax(Node root) { if (root == null) System.out.println("empty tree"); else { Queue<Node> queue = new LinkedList<Node>(); //make a queue Node max = root; //suppose max is root queue.add(root); //add root to queue while (queue.size() != 0) { //while size of queue is not empty Node temp = queue.remove(); //remove an item from queue if (temp.getElement() > max.getElement()) //if removed item is greater than max max = temp; //set new max if (temp.getLeft() != null) queue.add(temp.getLeft()); //traverse left if (temp.getRight() != null) queue.add(temp.getRight()); //traverse right } System.out.println(max.getElement()); //in the end ,print the max } }
public int findMaxInTree(Node root) { int max = Integer.MIN_VALUE; //set a default max value if (root == null) return max; //if root is null else { int left_max = findMaxInTree(root.getLeft()); //get left side max int right_max = findMaxInTree(root.getRight()); //get right side max if (left_max > right_max) //if left>right max = left_max; //set max=left else max=right_max; //else set max=right if (root.getElement() > max) //if root is greater than max of left or right max = root.getElement(); //set max=root } return max; //return max }
public int findNodeN(Node node, int n, int callNumber) //Call initially with findNodeN(tree.getRoot(), n, 0) { if (node.hasLeft()) findNodeN(node.getLeftChild(), n, callNumber); if (callNumber == n) return node.getElement(); else callNumber++; if (node.hasRight()) printTreeInOrder(node.getRightChild(), n, callNumber); }