From 8c29827097d519514ec734476614279c7e2330d1 Mon Sep 17 00:00:00 2001 From: konradkelly Date: Wed, 21 May 2025 11:57:00 -0700 Subject: [PATCH 1/3] instantiated TreeNodes and preOrder method --- src/Traversal.java | 27 +++++++++++++++++++++++++++ src/TreeNode.java | 7 ++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index 8da0f79..a483658 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,5 +1,32 @@ 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); + //System.out.println(root.right.data); + + root.left.left = new TreeNode(5); + root.left.right = new TreeNode(2); + + root.right = new TreeNode(15); + root.right.left = new TreeNode(-3); + root.right.right = new TreeNode(5); + + root.right.right.right = new TreeNode(22); + + preOrder(root); + } + public static void preOrder(TreeNode current) { + //if null: return + if (current == null) return; + + //print data + System.out.println(current.data); + //search left + preOrder(current.left); + //search right + preOrder(current.right); } } diff --git a/src/TreeNode.java b/src/TreeNode.java index acd9639..36e0468 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 74015c7b52ec2a35b4d0c1cede13c4f1c0824d90 Mon Sep 17 00:00:00 2001 From: konradkelly Date: Thu, 12 Feb 2026 14:52:32 -0800 Subject: [PATCH 2/3] refactor class constructor and implement preOrder, postOrder, and inOrder methods --- src/Traversal.java | 62 +++++++++++++++++++++++++++------------------- src/TreeNode.java | 10 +++++--- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index a483658..a06781f 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,32 +1,42 @@ public class Traversal { public static void main(String[] args) { - TreeNode root = new TreeNode(10); - //System.out.println(root.data); + TreeNode root = new TreeNode(10, null, null); + //System.out.println(root.value); + root.left = new TreeNode(9, null, null); + //System.out.println(root.left.value); + root.left.left = new TreeNode(5, null, null); + //System.out.println(root.left.left.value); + root.left.right = new TreeNode(2, null, null); + //System.out.println(root.left.right.value); - root.left = new TreeNode(9); - root.right = new TreeNode(15); - //System.out.println(root.right.data); - - root.left.left = new TreeNode(5); - root.left.right = new TreeNode(2); + 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); - root.right.left = new TreeNode(-3); - root.right.right = new TreeNode(5); - - root.right.right.right = new TreeNode(22); - - preOrder(root); + //preOrder(root); + //postOrder(root); + inOrder(root); + } + //Print a tree rooted at the 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 preOrder(TreeNode current) { - //if null: return - if (current == null) return; - - //print data - System.out.println(current.data); - //search left - preOrder(current.left); - //search right - preOrder(current.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); } -} +} \ No newline at end of file diff --git a/src/TreeNode.java b/src/TreeNode.java index 36e0468..5c01817 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,9 +1,11 @@ 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, TreeNode left, TreeNode right) { + this.value = value; + this.left = left; + this.right = right; + } } \ No newline at end of file From b8f23506adc02e77fea0df0b71c8adab241ba277 Mon Sep 17 00:00:00 2001 From: konradkelly Date: Tue, 17 Feb 2026 14:40:00 -0800 Subject: [PATCH 3/3] implemented printGreater and countNodes methods --- src/Traversal.java | 118 ++++++++++++++++++++++++++++++++++++++++----- src/TreeNode.java | 10 ++-- 2 files changed, 111 insertions(+), 17 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index a06781f..20f862b 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,39 +1,133 @@ +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 root = new TreeNode(10, null, null); + TreeNode root = new TreeNode(10, null, null); //System.out.println(root.value); - root.left = new TreeNode(9, null, null); + root.left = new TreeNode(9, null, null); //System.out.println(root.left.value); - root.left.left = new TreeNode(5, null, null); + root.left.left = new TreeNode(5, null, null); //System.out.println(root.left.left.value); - root.left.right = new TreeNode(2, null, null); + root.left.right = new TreeNode(2, null, null); //System.out.println(root.left.right.value); - 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(5, null,null); + root.right.right.right = new TreeNode(22, null, null); + + TreeNode stringRoot = new TreeNode("hello", null, null); + stringRoot.right = new TreeNode("hello", null, null); + stringRoot.left = new TreeNode("I", null, null); + stringRoot.right.left = new TreeNode("am", null, null); + stringRoot.left.right = new TreeNode("am", null, null); + + 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("Prorder iterative"); + //preOrderIter(root); //preOrder(root); //postOrder(root); - inOrder(root); + //inOrder(root); + //printGreater(root, 7); + //System.out.println(countNodes(root)); + + //System.out.println(toMap(stringRoot)); + } + + + public static void preOrderIter(TreeNode node) { + Stack> stack = new Stack<>(); + 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); + return counts; + } + private static void toMap(TreeNode node, Map counts) { + if (node == null) { + return; + } + counts.put(node.value, counts.getOrDefault(node.value, 0) + 1); + toMap(node.left, counts); + toMap(node.right, counts); + } + + public static int countNodes(TreeNode node) { + return node == null ? 0 : 1 + countNodes(node.left) + countNodes(node.right); + // int leftCount = countNodes(node.left); + // int rightCount = countNodes(node.right); + // int overallCount = leftCount + rightCount + 1; + // return overallCount; + } + + 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 a tree rooted at the 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 5c01817..7d0ee3a 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;