From f164907dd3434d44e573e5289f76c97d43ad9477 Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Wed, 21 May 2025 11:46:13 -0700 Subject: [PATCH 1/8] finished --- src/Traversal.java | 31 +++++++++++++++++++++++++++++++ src/TreeNode.java | 9 +++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 8da0f79..a570d93 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,5 +1,36 @@ public class Traversal { public static void main(String[] args) { + TreeNode root = new TreeNode(10); + + System.out.println(root.data); + + root.left = new TreeNode(9); + root.right = new TreeNode(15); + + root.left.left = new TreeNode(5); + root.left.right = new TreeNode(2); + + root.right.left = new TreeNode(-3); + root.right.right = new TreeNode(5); + + root.right.right.right = new TreeNode(22); + } + + public static void preOrder(TreeNode current){ + + if (current == null){ + return; + } + + System.out.println(current.data); + + if (current.left != null){ + preOrder(current.left); + } + + if (current.right != null){ + preOrder(current.right); + } } } diff --git a/src/TreeNode.java b/src/TreeNode.java index acd9639..4980cc4 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,4 +1,9 @@ public class TreeNode { - - + public int data; + public TreeNode left; + public TreeNode right; + + public TreeNode(int data){ + this.data = data; + } } \ No newline at end of file From dbc6d05b225fcff5e3dfa08822086a246e1d883e Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Thu, 12 Feb 2026 13:56:25 -0800 Subject: [PATCH 2/8] learned about tree traversals --- src/Traversal.java | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index a570d93..09e6687 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,35 +1,35 @@ public class Traversal { public static void main(String[] args) { - TreeNode root = new TreeNode(10); + TreeNode rooot = new TreeNode(10); - System.out.println(root.data); + System.out.println(rooot.data); - root.left = new TreeNode(9); - root.right = new TreeNode(15); + rooot.left = new TreeNode(9); + rooot.right = new TreeNode(15); - root.left.left = new TreeNode(5); - root.left.right = new TreeNode(2); + rooot.left.left = new TreeNode(5); + rooot.left.right = new TreeNode(2); - root.right.left = new TreeNode(-3); - root.right.right = new TreeNode(5); + rooot.right.left = new TreeNode(-3); + rooot.right.right = new TreeNode(5); - root.right.right.right = new TreeNode(22); + rooot.right.right.right = new TreeNode(22); } - public static void preOrder(TreeNode current){ + public static void preOrder(TreeNode current1){ - if (current == null){ + if (current1 == null){ return; } - System.out.println(current.data); + System.out.println(current1.data); - if (current.left != null){ - preOrder(current.left); + if (current1.left != null){ + preOrder(current1.left); } - if (current.right != null){ - preOrder(current.right); + if (current1.right != null){ + preOrder(current1.right); } } From 9bf06ed071b121d1d8a4d4af1c9e5b404917317c Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Thu, 12 Feb 2026 14:00:26 -0800 Subject: [PATCH 3/8] learned about trees --- src/Traversal.java | 4 ++-- src/TreeNode.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 09e6687..70a2abd 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -2,7 +2,7 @@ public class Traversal { public static void main(String[] args) { TreeNode rooot = new TreeNode(10); - System.out.println(rooot.data); + System.out.println(rooot.value); rooot.left = new TreeNode(9); rooot.right = new TreeNode(15); @@ -22,7 +22,7 @@ public static void preOrder(TreeNode current1){ return; } - System.out.println(current1.data); + System.out.println(current1.value); if (current1.left != null){ preOrder(current1.left); diff --git a/src/TreeNode.java b/src/TreeNode.java index 4980cc4..4dd3cef 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,9 +1,9 @@ public class TreeNode { - public int data; + public int value; public TreeNode left; public TreeNode right; - public TreeNode(int data){ - this.data = data; + public TreeNode(int value){ + this.value = value; } } \ No newline at end of file From e8c6fe10312ba91694c186843eed13039af724e4 Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Thu, 12 Feb 2026 14:33:28 -0800 Subject: [PATCH 4/8] LEARNINGGGG --- src/Traversal.java | 8 +++++--- src/TraversalTest.java | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 70a2abd..f7155bc 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -14,9 +14,11 @@ public static void main(String[] args) { rooot.right.right = new TreeNode(5); rooot.right.right.right = new TreeNode(22); + + preorder(rooot); } - public static void preOrder(TreeNode current1){ + public static void preorder(TreeNode current1){ if (current1 == null){ return; @@ -25,11 +27,11 @@ public static void preOrder(TreeNode current1){ System.out.println(current1.value); if (current1.left != null){ - preOrder(current1.left); + preorder(current1.left); } if (current1.right != null){ - preOrder(current1.right); + preorder(current1.right); } } diff --git a/src/TraversalTest.java b/src/TraversalTest.java index df275f1..b580f23 100644 --- a/src/TraversalTest.java +++ b/src/TraversalTest.java @@ -1,5 +1,5 @@ import org.junit.jupiter.api.Test; public class TraversalTest { - + } From f20ac7f63f44d01d0a7d71ea9a25e24bd13a2649 Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Thu, 12 Feb 2026 14:46:21 -0800 Subject: [PATCH 5/8] IM LEARNINGGG MOREEEE --- src/Traversal.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index f7155bc..727b75e 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -15,7 +15,16 @@ public static void main(String[] args) { rooot.right.right.right = new TreeNode(22); - preorder(rooot); + // preorder(rooot); + postorder(rooot); + + } + + public static void postorder(TreeNode node){ + if (node == null) return; + postorder(node.left); + postorder(node.right); + System.out.println(node.value); } public static void preorder(TreeNode current1){ From 5df7b44436ae3e2dc2c2ebf8e7912efa2322805c Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Tue, 17 Feb 2026 20:23:52 -0800 Subject: [PATCH 6/8] adding changes with generics --- src/Traversal.java | 20 ++++++++++---------- src/TreeNode.java | 14 ++++++++------ 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 727b75e..72fa007 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,33 +1,33 @@ public class Traversal { public static void main(String[] args) { - TreeNode rooot = new TreeNode(10); + TreeNode rooot = new TreeNode<>(10, null, null); System.out.println(rooot.value); - rooot.left = new TreeNode(9); - rooot.right = new TreeNode(15); + rooot.left = new TreeNode<>(9, null, null); + rooot.right = new TreeNode<>(15, null, null); - rooot.left.left = new TreeNode(5); - rooot.left.right = new TreeNode(2); + rooot.left.left = new TreeNode<>(5, null, null); + rooot.left.right = new TreeNode<>(2, null, null); - rooot.right.left = new TreeNode(-3); - rooot.right.right = new TreeNode(5); + rooot.right.left = new TreeNode<>(-3, null, null); + rooot.right.right = new TreeNode<>(5, null, null); - rooot.right.right.right = new TreeNode(22); + rooot.right.right.right = new TreeNode<>(22, null, null); // preorder(rooot); postorder(rooot); } - public static void postorder(TreeNode node){ + public static void postorder(TreeNode node){ if (node == null) return; postorder(node.left); postorder(node.right); System.out.println(node.value); } - public static void preorder(TreeNode current1){ + public static void preorder(TreeNode current1){ if (current1 == null){ return; diff --git a/src/TreeNode.java b/src/TreeNode.java index 4dd3cef..3075ae1 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,9 +1,11 @@ -public class TreeNode { - public int value; - public TreeNode left; - public TreeNode right; +public class TreeNode { + public T value; + public TreeNode left; + public TreeNode right; - public TreeNode(int value){ - this.value = value; + public TreeNode(T data, TreeNode left, TreeNode right){ + this.value = data; + this.left = left; + this.right = right; } } \ No newline at end of file From 4c3567aedc89c59b17844f3d252b447c904d27d0 Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Tue, 17 Feb 2026 21:00:51 -0800 Subject: [PATCH 7/8] continued --- src/Traversal.java | 49 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 72fa007..47066dc 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -2,8 +2,6 @@ public class Traversal { public static void main(String[] args) { TreeNode rooot = new TreeNode<>(10, null, null); - System.out.println(rooot.value); - rooot.left = new TreeNode<>(9, null, null); rooot.right = new TreeNode<>(15, null, null); @@ -15,19 +13,53 @@ public static void main(String[] args) { rooot.right.right.right = new TreeNode<>(22, null, null); + TreeNode stringRoot = new TreeNode("hello", null, null); + stringRoot.left = new TreeNode("how", null, null); + stringRoot.right = new TreeNode("are", null, null); + + stringRoot.left.left = new TreeNode("you", null, null); + stringRoot.left.right = new TreeNode("I", null, null); + + stringRoot.right.left = new TreeNode("am", null, null); + stringRoot.right.right = new TreeNode("so", null, null); + + stringRoot.right.right.right = new TreeNode("good", null, null); + // preorder(rooot); - postorder(rooot); + //postorder(rooot); + // inorder(stringRoot); + + //allows it to fail at compile time rather than runtime + printGreater(rooot, 100); } - public static void postorder(TreeNode node){ + public static int countNodes(TreeNode node){ + if (node == null) return 0; + // int leftCount = countNodes(node.left); + // int rightCount = countNodes(node.right); + // int overallCount = leftCount + rightCount + 1; + // return overallCount; + + return countNodes(node.left) + countNodes(node.right) + 1; + } + + + public static void printGreater(TreeNode node, int threshold){ + if (node == null) return; + if (node.value > threshold) System.out.println(node.value); + printGreater(node.left, threshold); + printGreater(node.right, threshold); + } + + public static void postorder(TreeNode node){ if (node == null) return; postorder(node.left); postorder(node.right); System.out.println(node.value); } - public static void preorder(TreeNode current1){ + public static void preorder(TreeNode current1){ if (current1 == null){ return; @@ -44,4 +76,11 @@ public static void preorder(TreeNode current1){ } } + + public static void inorder(TreeNode node){ + if (node == null) return; + inorder(node.left); + System.out.println(node.value); + inorder(node.right); + } } From 4a6ce25a399f178e58cc56b12e274d277f089759 Mon Sep 17 00:00:00 2001 From: ryanrmills Date: Wed, 25 Feb 2026 19:25:28 -0800 Subject: [PATCH 8/8] I forgot to commit --- src/Traversal.java | 117 +++++++++++++++++++++++++++++++---------- src/TraversalTest.java | 6 +-- 2 files changed, 91 insertions(+), 32 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 47066dc..efc46bf 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,17 +1,23 @@ +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; +import java.util.Queue; +import java.util.Stack; + public class Traversal { public static void main(String[] args) { - TreeNode rooot = new TreeNode<>(10, null, null); + TreeNode root = new TreeNode<>(10, null, null); - rooot.left = new TreeNode<>(9, null, null); - rooot.right = new TreeNode<>(15, null, null); + root.left = new TreeNode<>(9, null, null); + root.right = new TreeNode<>(15, null, null); - rooot.left.left = new TreeNode<>(5, null, null); - rooot.left.right = new TreeNode<>(2, null, null); + root.left.left = new TreeNode<>(5, null, null); + root.left.right = new TreeNode<>(2, null, null); - rooot.right.left = new TreeNode<>(-3, null, null); - rooot.right.right = new TreeNode<>(5, null, null); + root.right.left = new TreeNode<>(-3, null, null); + root.right.right = new TreeNode<>(5, null, null); - rooot.right.right.right = new TreeNode<>(22, null, null); + root.right.right.right = new TreeNode<>(22, null, null); TreeNode stringRoot = new TreeNode("hello", null, null); stringRoot.left = new TreeNode("how", null, null); @@ -25,13 +31,84 @@ public static void main(String[] args) { stringRoot.right.right.right = new TreeNode("good", null, null); - // preorder(rooot); - //postorder(rooot); + TreeNode megaRoot = new TreeNode<>(1, null, null); + + TreeNode current = megaRoot; + for (int i = 2; i < 50001; i++){ + current.right = new TreeNode(i, null, null); + current = current.right; + } + + levelOrder(root); + //preorder(megaRoot); + + // System.out.println("Preorder recursive"); + // preorder(root); + // System.out.println("Preorder iterative"); + // preOrderIter(megaRoot); + + // preorder(root); + //postorder(root); // inorder(stringRoot); //allows it to fail at compile time rather than runtime - printGreater(rooot, 100); + // printGreater(root, 100); + + // System.out.println(toMap(stringRoot)); + } + + public static void preOrderIter(TreeNode node){ + Stack> stack = new Stack<>(); + stack.push(node); + while (!stack.empty()){ + TreeNode current = stack.pop(); + if (current == null) continue; + System.out.println(current.value); + stack.push(current.right); + stack.push(current.left); + } + } + + public static void levelOrder(TreeNode node){ + Queue> queue = new LinkedList<>(); + queue.add(node); + + while (!queue.isEmpty()){ + TreeNode current = queue.poll(); + if (current == null){ + continue; + } + + System.out.println(current.value); + queue.add(current.left); + queue.add(current.right); + } + } + + public static void preorder(TreeNode current1){ + + if (current1 == null) return; + + System.out.println(current1.value); + + if (current1.left != null) preorder(current1.left); + + if (current1.right != null) preorder(current1.right); + } + + public static Map toMap(TreeNode node){ + Map counts = new HashMap<>(); + toMapHelper(node, counts); + return counts; + } + + private static void toMapHelper(TreeNode node, Map counts){ + if (node == null) return; + + counts.put(node.value, counts.getOrDefault(node.value, 0) + 1); + toMapHelper(node.left, counts); + toMapHelper(node.right, counts); } public static int countNodes(TreeNode node){ @@ -59,24 +136,6 @@ public static void postorder(TreeNode node){ System.out.println(node.value); } - public static void preorder(TreeNode current1){ - - if (current1 == null){ - return; - } - - System.out.println(current1.value); - - if (current1.left != null){ - preorder(current1.left); - } - - if (current1.right != null){ - preorder(current1.right); - } - - } - public static void inorder(TreeNode node){ if (node == null) return; inorder(node.left); diff --git a/src/TraversalTest.java b/src/TraversalTest.java index b580f23..d9b1704 100644 --- a/src/TraversalTest.java +++ b/src/TraversalTest.java @@ -1,5 +1,5 @@ -import org.junit.jupiter.api.Test; +// import org.junit.jupiter.api.Test; -public class TraversalTest { +// public class TraversalTest { -} +// }