Skip to content

Instantly share code, notes, and snippets.

@dmnugent80
Last active April 24, 2019 05:23
Show Gist options
  • Save dmnugent80/62026f2be9ea64d44e9b to your computer and use it in GitHub Desktop.
Save dmnugent80/62026f2be9ea64d44e9b to your computer and use it in GitHub Desktop.
Return Deepest Node in Binary Tree
//Return deepest, rightmost node in a tree
//Implementation: use DFS
import java.util.Queue;
import java.util.LinkedList;
public class Main
{
public static void main(String[] args)
{
BinaryTree tree = new BinaryTree();
tree.add(5);
tree.add(4);
tree.add(6);
tree.add(3);
tree.add(7);
tree.add(2);
tree.add(8);
tree.add(1);
tree.add(11);
TreeNode node = tree.returnLastNode();
System.out.println("last node: " + node.data);
}
}
public class TreeNode
{
int data;
TreeNode left;
TreeNode right;
public TreeNode(int d){
data = d;
left = null;
right = null;
}
}
public class IntWrapper{
int value = 0;
}
public class BinaryTree
{
TreeNode root;
public BinaryTree(){
root = null;
}
public boolean add(int newData){
if (root == null){
root = new TreeNode(newData);
return true;
}
else{
TreeNode curr = root;
while (true){
if (curr.data == newData){
return false;
}
else if (curr.data > newData){
if (curr.left == null){
curr.left = new TreeNode(newData);
return true;
}
else{
curr = curr.left;
}
}
else{
if (curr.right == null){
curr.right = new TreeNode(newData);
return true;
}
else{
curr = curr.right;
}
}
}
}
}
public TreeNode returnLastNode(){
if (root == null) return null;
if (root.left == null && root.right == null) return root;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
TreeNode lastNode = null;
while (!queue.isEmpty()){
lastNode = queue.remove();
if (lastNode.left != null)
queue.add(lastNode.left);
if (lastNode.right != null)
queue.add(lastNode.right);
}
return lastNode;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment