From 68a1859914f59d6224b16695beb20b2334e3d39c Mon Sep 17 00:00:00 2001 From: Darien Arthur-Gocken <233949874+DarienArthur-Gocken@users.noreply.github.com> Date: Thu, 12 Feb 2026 14:45:17 -0800 Subject: [PATCH 1/6] live code --- src/Traversal.java | 36 ++++++++++++++++++++++++++++++++++++ src/TreeNode.java | 10 +++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index 8da0f79..bf8caee 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,5 +1,41 @@ public class Traversal { public static void main(String[] args) { + TreeNode root = new TreeNode(10, null, null); + root.left = new TreeNode(9, null, null); + root.left.left = new TreeNode(5, null, null); + root.left.right = new TreeNode(2, null, null); + root.right = new TreeNode(15, null, null); + root.right.left = new TreeNode(-3, null, null); + root.right.right = new TreeNode(5, null, null); + root.right.right.right = new TreeNode(22, null, null); + System.out.println("======PRE ORDER======"); + preorder(root); + System.out.println("======POST ORDER======"); + postorder(root); + System.out.println("======IN ORDER======"); + inorder(root); + } + + //print tree rooted at given node in pre-order. + public static void preorder(TreeNode node) { + if(node == null) return; + System.out.println(node.value); + preorder(node.left); + preorder(node.right); + } + + public static void postorder(TreeNode node) { + if(node == null) return; + postorder(node.left); + postorder(node.right); + System.out.println(node.value); + } + + public static void inorder(TreeNode node) { + if(node == null) return; + inorder(node.left); + System.out.println(node.value); + inorder(node.right); } } diff --git a/src/TreeNode.java b/src/TreeNode.java index acd9639..fd57c18 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,4 +1,12 @@ public class TreeNode { + public int value; - + public TreeNode left; + public TreeNode right; + + public TreeNode(int value, TreeNode left, TreeNode right) { + this.value = value; + this.left = left; + this.right = right; + } } \ No newline at end of file From 13e3c483621fee980fb91242a477b076e0ac0c11 Mon Sep 17 00:00:00 2001 From: Darien Arthur-Gocken <233949874+DarienArthur-Gocken@users.noreply.github.com> Date: Tue, 17 Feb 2026 13:20:15 -0800 Subject: [PATCH 2/6] generics --- src/Traversal.java | 22 +++++++++++----------- src/TreeNode.java | 10 +++++----- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index bf8caee..668e523 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,13 +1,13 @@ public class Traversal { public static void main(String[] args) { - TreeNode root = new TreeNode(10, null, null); - root.left = new TreeNode(9, null, null); - root.left.left = new TreeNode(5, null, null); - root.left.right = new TreeNode(2, null, null); - root.right = new TreeNode(15, null, null); - root.right.left = new TreeNode(-3, null, null); - root.right.right = new TreeNode(5, null, null); - root.right.right.right = new TreeNode(22, null, null); + TreeNode root = new TreeNode(10, null, null); + root.left = new TreeNode(9, null, null); + root.left.left = new TreeNode(5, null, null); + root.left.right = new TreeNode(2, null, null); + root.right = new TreeNode(15, null, null); + root.right.left = new TreeNode(-3, null, null); + root.right.right = new TreeNode(5, null, null); + root.right.right.right = new TreeNode(22, null, null); System.out.println("======PRE ORDER======"); preorder(root); @@ -18,21 +18,21 @@ public static void main(String[] args) { } //print tree rooted at given node in pre-order. - public static void preorder(TreeNode node) { + public static void preorder(TreeNode node) { if(node == null) return; System.out.println(node.value); preorder(node.left); preorder(node.right); } - 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 inorder(TreeNode node) { + public static void inorder(TreeNode node) { if(node == null) return; inorder(node.left); System.out.println(node.value); diff --git a/src/TreeNode.java b/src/TreeNode.java index fd57c18..23c93e0 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,10 +1,10 @@ -public class TreeNode { - public int value; +public class TreeNode { + public T value; - public TreeNode left; - public TreeNode right; + public TreeNode left; + public TreeNode right; - public TreeNode(int value, TreeNode left, TreeNode right) { + public TreeNode(T value, TreeNode left, TreeNode right) { this.value = value; this.left = left; this.right = right; From 582f42807f5317c03ee411494990304bb01d7211 Mon Sep 17 00:00:00 2001 From: Darien Arthur-Gocken <233949874+DarienArthur-Gocken@users.noreply.github.com> Date: Tue, 17 Feb 2026 13:50:32 -0800 Subject: [PATCH 3/6] printgreater + second root --- src/Traversal.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Traversal.java b/src/Traversal.java index 668e523..b35e0ef 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -9,12 +9,33 @@ public static void main(String[] args) { root.right.right = new TreeNode(5, null, null); root.right.right.right = new TreeNode(22, null, null); + + TreeNode root2 = new TreeNode("hello", null, null); + root2.left = new TreeNode("how", null, null); + root2.left.left = new TreeNode("are", null, null); + root2.left.right = new TreeNode("you", null, null); + root2.right = new TreeNode("i", null, null); + root2.right.left = new TreeNode("am", null, null); + root2.right.right = new TreeNode("so", null, null); + root2.right.right.right = new TreeNode("good", null, null); + System.out.println("======PRE ORDER======"); preorder(root); System.out.println("======POST ORDER======"); postorder(root); System.out.println("======IN ORDER======"); inorder(root); + + printGreater(root, 7); + } + + 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); } //print tree rooted at given node in pre-order. From 913dcd95799b840483b15cc758248629d22b1ae6 Mon Sep 17 00:00:00 2001 From: Darien Arthur-Gocken <233949874+DarienArthur-Gocken@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:36:14 -0800 Subject: [PATCH 4/6] count nodes --- src/Traversal.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index b35e0ef..800ccfc 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -18,7 +18,7 @@ public static void main(String[] args) { root2.right.left = new TreeNode("am", null, null); root2.right.right = new TreeNode("so", null, null); root2.right.right.right = new TreeNode("good", null, null); - +/* System.out.println("======PRE ORDER======"); preorder(root); System.out.println("======POST ORDER======"); @@ -27,6 +27,13 @@ public static void main(String[] args) { inorder(root); printGreater(root, 7); +*/ + System.out.println(countNodes(root)); + } + + public static int countNodes(TreeNode node) { + if(node == null) return 0; + return 1 + countNodes(node.left) + countNodes(node.right); } public static void printGreater(TreeNode node, int threshold) { From 99d563480106b1cde48f09c41a575d5b06619239 Mon Sep 17 00:00:00 2001 From: Darien Arthur-Gocken <233949874+DarienArthur-Gocken@users.noreply.github.com> Date: Tue, 24 Feb 2026 13:21:00 -0800 Subject: [PATCH 5/6] catching up --- src/Traversal.java | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index 800ccfc..bf2c598 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,3 +1,6 @@ +import java.util.HashMap; +import java.util.Map; + public class Traversal { public static void main(String[] args) { TreeNode root = new TreeNode(10, null, null); @@ -66,4 +69,22 @@ public static void inorder(TreeNode node) { System.out.println(node.value); inorder(node.right); } -} + + public static Map toMap(TreeNode node){ + Map counts = new HashMap<>(); + toMap(node, counts); + return counts; + } + + private static void toMap(TreeNode node, Map counts){ + if(node == null){ + return; + } + + // fill up those counts + counts.put(node.value, counts.getOrDefault(node.value, 0) + 1); + + toMap(node.left, counts); + toMap(node.right, counts); + } +} \ No newline at end of file From 7c77caa10c71bc5ada08473ee07e4a84353ae9ed Mon Sep 17 00:00:00 2001 From: Darien Arthur-Gocken <233949874+DarienArthur-Gocken@users.noreply.github.com> Date: Tue, 24 Feb 2026 14:51:04 -0800 Subject: [PATCH 6/6] finish --- src/Traversal.java | 67 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index bf2c598..589f57f 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,5 +1,8 @@ import java.util.HashMap; +import java.util.LinkedList; import java.util.Map; +import java.util.Stack; +import java.util.Queue; public class Traversal { public static void main(String[] args) { @@ -31,9 +34,63 @@ public static void main(String[] args) { printGreater(root, 7); */ - System.out.println(countNodes(root)); + //System.out.println(countNodes(root)); + + TreeNode megaRoot = new TreeNode(1, null, null); + + TreeNode current = megaRoot; + + for(int i = 2; i <= 50000; i++) { + current.right = new TreeNode(i, null, null); + current = current.right; + } + + + levelOrder(root); + //preOrderIter(megaRoot); + + /*System.out.println("Preorder recursive"); + preorder(root); + System.out.println("Preorder iterative"); + preOrderIter(root);*/ + } + + 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); + } + } + + //print tree rooted at given node in pre-order. + public static void preorder(TreeNode node) { + if(node == null) return; + System.out.println(node.value); + preorder(node.left); + preorder(node.right); } + public static int countNodes(TreeNode node) { if(node == null) return 0; return 1 + countNodes(node.left) + countNodes(node.right); @@ -48,14 +105,6 @@ public static void printGreater(TreeNode node, int threshold) { printGreater(node.right, threshold); } - //print tree rooted at given node in pre-order. - public static void preorder(TreeNode node) { - if(node == null) return; - System.out.println(node.value); - preorder(node.left); - preorder(node.right); - } - public static void postorder(TreeNode node) { if(node == null) return; postorder(node.left);