From a8e221bfd69253f3b99767515f2fbed4de837a68 Mon Sep 17 00:00:00 2001 From: samkosal <67755908+samkosal@users.noreply.github.com> Date: Thu, 12 Feb 2026 14:49:08 -0800 Subject: [PATCH 1/5] finihsed --- src/Traversal.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/TreeNode.java | 9 ++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index 8da0f79..9b35d5d 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,5 +1,49 @@ 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(-3, null, null); + root.right.right.right = new TreeNode(-3, null, null); + System.out.println(root.value); + System.out.println(root.left.value); + + + // preorder(root); + // postorder(root); + inorder(root); + } + + //print a tree roted at the given node in pre-order + public static void preorder(TreeNode node) { + if (node == null) { + return; + } + //print value + System.out.println(node.value); + //traverse left + preorder(node.left); + //traverse right + 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..6528bdc 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,4 +1,11 @@ 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 ff6855f78f4307f753704134febfd3ddebb3a611 Mon Sep 17 00:00:00 2001 From: samkosal <67755908+samkosal@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:37:05 -0800 Subject: [PATCH 2/5] finished --- src/Traversal.java | 67 ++++++++++++++++++++++++++++++++++++---------- src/TreeNode.java | 10 +++---- 2 files changed, 58 insertions(+), 19 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 9b35d5d..4522f52 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,25 +1,64 @@ +import static org.junit.jupiter.api.DynamicTest.stream; + 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); + 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); - root.right = new TreeNode(15, null, null); - root.right.left = new TreeNode(-3, null, null); - root.right.right = new TreeNode(-3, null, null); - root.right.right.right = new TreeNode(-3, null, null); - System.out.println(root.value); - System.out.println(root.left.value); + TreeNode stringRoot = new TreeNode("hello", null, null); + stringRoot.left = new TreeNode("how", null, null); + stringRoot.left.left = new TreeNode("are", null, null); + stringRoot.left.right = new TreeNode("you", null, null); + stringRoot.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(root); // postorder(root); - inorder(root); + // inorder(stringRoot); + // printGreater(root, 7); + System.out.println(countNodes(stringRoot)); + } + + 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 node == null ? 0 : 1 + countNodes(node.left) + countNodes(node.right); + // return countNodes(node.left) + countNodes(node.right) + 1; + } + + public static void printGreater(TreeNode node, int threshold) { + if (node == null) { + return; + } + //print value + if (node.value > threshold) { + System.out.println(node.value); + } + + //traverse left + printGreater(node.left, threshold); + //traverse right + printGreater(node.right, threshold); } //print a tree roted at the given node in pre-order - public static void preorder(TreeNode node) { + public static void preorder(TreeNode node) { if (node == null) { return; } @@ -32,14 +71,14 @@ public static void preorder(TreeNode node) { } - 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 6528bdc..f230dc8 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,9 +1,9 @@ -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, TreeNode left, TreeNode right) { + public TreeNode(T value, TreeNode left, TreeNode right) { this.value = value; this.left = left; this.right = right; From 38a6ecb61451076b9d57cb6a34eed8cd14168ee6 Mon Sep 17 00:00:00 2001 From: samkosal <67755908+samkosal@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:35:04 -0800 Subject: [PATCH 3/5] finishs --- src/Traversal.java | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index 4522f52..336b070 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,5 +1,8 @@ import static org.junit.jupiter.api.DynamicTest.stream; +import java.util.HashMap; +import java.util.Map; + public class Traversal { public static void main(String[] args) { TreeNode root = new TreeNode<>(10, null, null); @@ -26,7 +29,24 @@ public static void main(String[] args) { // postorder(root); // inorder(stringRoot); // printGreater(root, 7); - System.out.println(countNodes(stringRoot)); + // Map counts = new HashMap<>(); + System.out.println(toMap(stringRoot)); + } + 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); } public static int countNodes(TreeNode node) { From 16855fe77914a3ef0ac339c1332e02c6d8dfa487 Mon Sep 17 00:00:00 2001 From: samkosal <67755908+samkosal@users.noreply.github.com> Date: Sun, 22 Feb 2026 19:10:19 -0800 Subject: [PATCH 4/5] finihsed --- src/Traversal.java | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/Traversal.java b/src/Traversal.java index 336b070..8e788e2 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -106,3 +106,60 @@ public static void inorder(TreeNode node) { } } + +/** + * A utility class for performing operations on a binary tree of Strings. + */ +public class QuickCheck { + + /** + * Prints all strings longer than 7 characters in a tree. + * The strings should be printed in pre-order. + * Each qualifying string should appear on its own line. + * + * If the node itself is null, the method should print nothing. + * + * You can assume that there are no null Strings stored in the tree nodes. + * + * @param node the root node of the binary tree + */ + public static void printLongerThan7(TreeNode node) { + if (node == null) { + return; + } + + if ((node.value).length() > 7) { + System.out.println(node.value); + } + + printLongerThan7(node.left); + printLongerThan7(node.right); + + } + + /** + * Returns the sum of all nodes holding odd numbers. + * + * If the node itself is null, return 0. + * + * You can assume there are no null Integers held in the values. + * + * @param node the root node of the binary tree + * @return the sum of all odd-valued nodes + */ + public static int oddSum(TreeNode node) { + if (node == null) { + return 0; + } + + int left = oddSum(node.left); + int right = oddSum(node.right); + + if (node.value % 2 != 0) { + return left + right + node.value; + } + return left + right; + + + } +} \ No newline at end of file From 7e629dccf32a2ddf9a1a708df451c81b652342d0 Mon Sep 17 00:00:00 2001 From: samkosal <67755908+samkosal@users.noreply.github.com> Date: Tue, 24 Feb 2026 23:32:19 -0800 Subject: [PATCH 5/5] finished --- .vscode/settings.json | 3 ++ src/Traversal.java | 85 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c995aa5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.debug.settings.onBuildFailureProceed": true +} \ No newline at end of file diff --git a/src/Traversal.java b/src/Traversal.java index 8e788e2..f2c7771 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,7 +1,10 @@ import static org.junit.jupiter.api.DynamicTest.stream; import java.util.HashMap; +import java.util.LinkedList; +import java.util.Queue; import java.util.Map; +import java.util.Stack; public class Traversal { public static void main(String[] args) { @@ -25,13 +28,79 @@ public static void main(String[] args) { stringRoot.right.right = new TreeNode("so", null, null); stringRoot.right.right.right = new TreeNode("good", null, null); + TreeNode megaRoot = new TreeNode<>(1, null, null); + TreeNode current = megaRoot; + + for (int i = 2; i <= 5000; i++ ) { + current.right = new TreeNode(i, null, null); + current = current.right; + } + + System.out.println("Preorder recursive"); + preorder(root); + System.out.println("Preorder iterative"); + perOrderIter(root); + System.out.println("Preorder iterative"); + levelOrder(root); // preorder(root); // postorder(root); // inorder(stringRoot); // printGreater(root, 7); // Map counts = new HashMap<>(); - System.out.println(toMap(stringRoot)); + // System.out.println(toMap(root)); + } + + //print a tree roted at the given node in pre-order + public static void preorder(TreeNode node) { + if (node == null) { + return; + } + //print value + System.out.println(node.value); + //traverse left + preorder(node.left); + //traverse right + preorder(node.right); + + } + + public static void perOrderIter(TreeNode node) { + Stack> stack = new Stack<>(); + // TreeNode current = node; + + stack.push(node); + + while (!stack.isEmpty()) { + 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 Map toMap(TreeNode node) { Map counts = new HashMap<>(); toMap(node, counts); @@ -77,20 +146,6 @@ public static void printGreater(TreeNode node, int threshold) { printGreater(node.right, threshold); } - //print a tree roted at the given node in pre-order - public static void preorder(TreeNode node) { - if (node == null) { - return; - } - //print value - System.out.println(node.value); - //traverse left - preorder(node.left); - //traverse right - preorder(node.right); - - } - public static void postorder(TreeNode node) { if (node == null) return; postorder(node.left);