Skip to content

Instantly share code, notes, and snippets.

@dmnugent80
Last active August 29, 2015 14:13
Show Gist options
  • Save dmnugent80/ffc7c2ca2021f1d3ec41 to your computer and use it in GitHub Desktop.
Save dmnugent80/ffc7c2ca2021f1d3ec41 to your computer and use it in GitHub Desktop.
Traverse a binary there so that the order returned is ordered from smallest to greatest.
public class TreeNode{
public int data;
public TreeNode left;
public TreeNode right;
public TreeNode(int d){
this.data = d;
this.left = null;
this.right = null;
}
}
public class BinarySearchTree{
public root;
public BinarySearchTree(){
root = null;
}
public boolean addNode(int d){
if (root == null){
root = new TreeNode(d);
return true;
}
else if (root.data == d){
return false;
}
else{
return addNodeHelper(root, d);
}
}
private boolean addNodeHelper(TreeNode node, int d){
if (d == node.data){
return false;
}
else if (d < node.data){
if (node.left == null){
node.left = new TreeNode(d);
return true;
}
else{
return addNodeHelper(node.left, d);
}
else{
if (node.right == null){
node.right = new TreeNode(d);
return true;
}
else{
return addNodeHelper(node.right, d);
}
}
}
}
public TreeNode find(int d){
TreeNode curr = root;
while (curr != null){
if (curr.data == d){
return curr;
}
else if (d < curr.data){
curr = curr.left;
}
else{
curr = curr.right;
}
}
return null;
}
public Integer[] getInOrderValues(){
if (root == null){
return null;
}
ArrayList<Integer> arrayInOrder= new ArrayList<Integer>();
getInOrderValuesHelper(root, arrayInOrder)
return arrayInOrder.toArray();
}
private void getInOrderValuesHelper(TreeNode node, ArrayList<Integer> arrayInOrder){
if (node == null){
return;
}
getInOrderValuesHelper(node.left, arrayList);
arrayInOrder.add(node.data);
getInOrderValuesHelper(node.right, arrayList);
}
}
public class BinaryTree{
public TreeNode root;
public BinaryTree(){
this.root = null;
}
public Integer[] getElementsInOrder(){
Queue<TreeNode> treeQueue = new LinkedList<TreeNode>();
BinarySearchTree newTree = new BinarySearchTree();
if (root == null){
return;
}
//Start Breadth first traversal of tree
treeQueue.clear();
treeQueue.add(root);
while (!(treeQueue.size() == 0)){
TreeNode node = treeQueue.remove();
newTree.addNode(node.data);
if (node.left != null){
treeQueue.add(node.left);
}
if (node.right != null){
treeQueue.add(node.right);
}
}
//we now have a BST, return result of getInOrderValues
return newTree.getInOrderValues();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment