From de543ba08dc2984a35ef6879908c043217929d80 Mon Sep 17 00:00:00 2001 From: Jake-G123 Date: Thu, 12 Feb 2026 14:41:30 -0800 Subject: [PATCH 1/3] Finished tree implement livecode #1 --- src/Traversal.java | 53 ++++++++++++++++++++++++++++++++++++++++++++++ src/TreeNode.java | 14 +++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index 8da0f79..42c4280 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,5 +1,58 @@ + public class Traversal { public static void main(String[] args) { + TreeNode root = new TreeNode(10); + // <-- root + root.left = new TreeNode(9); + root.left.left = new TreeNode(5); + root.left.right = new TreeNode(2); + // root --> + root.right = new TreeNode(15); + root.right.left = new TreeNode(-3); + root.right.right = new TreeNode(5); + root.right.right.right = new TreeNode(22); + + System.out.print("\nPre Order: "); + preOrder(root); + System.out.print("\nPost Order: "); + postOrder(root); + System.out.print("\nIn Order: "); + inOrder(root); + } + + // Print a tree rooted at the given node in pre-order + public static void preOrder(TreeNode node) { + // if null return + if (node == null) return; + // print value + System.out.print("["+ node.value +"]"); + // traverse left + preOrder(node.left); + // traverse right + preOrder(node.right); + } + + // Print a tree rooted at the given node in post-order + public static void postOrder(TreeNode node) { + // if null return + if (node == null) return; + // traverse left + postOrder(node.left); + // traverse right + postOrder(node.right); + // print value + System.out.print("["+ node.value +"]"); + } + // Print a tree rooted at the given node in order + public static void inOrder(TreeNode node) { + // if null return + if (node == null) return; + // traverse left + postOrder(node.left); + // print value + System.out.print("["+ node.value +"]"); + // traverse right + postOrder(node.right); } } diff --git a/src/TreeNode.java b/src/TreeNode.java index acd9639..f3ba06c 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,4 +1,16 @@ 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; + } + public TreeNode(int value) { + this.value = value; + this.left = null; + this.right = null; + } } \ No newline at end of file From 2d483c691ca686da608d861e50d5f35cfb2465ea Mon Sep 17 00:00:00 2001 From: Jake-G123 Date: Tue, 17 Feb 2026 14:36:32 -0800 Subject: [PATCH 2/3] Completed livecode #2 --- src/Traversal.java | 89 ++++++++++++++++++++++++++++++++-------------- src/TreeNode.java | 12 +++---- 2 files changed, 68 insertions(+), 33 deletions(-) diff --git a/src/Traversal.java b/src/Traversal.java index 42c4280..01d3b9a 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,16 +1,27 @@ - public class Traversal { public static void main(String[] args) { - TreeNode root = new TreeNode(10); + TreeNode root = new TreeNode<>(10); // <-- root - root.left = new TreeNode(9); - root.left.left = new TreeNode(5); - root.left.right = new TreeNode(2); + root.left = new TreeNode<>(9); + root.left.left = new TreeNode<>(5); + root.left.right = new TreeNode<>(2); // root --> - root.right = new TreeNode(15); - root.right.left = new TreeNode(-3); - root.right.right = new TreeNode(5); - root.right.right.right = new TreeNode(22); + root.right = new TreeNode<>(15); + root.right.left = new TreeNode<>(-3); + root.right.right = new TreeNode<>(5); + root.right.right.right = new TreeNode<>(22); + + + TreeNode stringRoot = new TreeNode<>("Hello"); + // <-- stringRoot + stringRoot.left = new TreeNode<>("world"); + stringRoot.left.left = new TreeNode<>("test"); + stringRoot.left.right = new TreeNode<>("1234"); + // stringroot --> + stringRoot.right = new TreeNode<>("abcd"); + stringRoot.right.left = new TreeNode<>("node"); + stringRoot.right.right = new TreeNode<>("another node"); + stringRoot.right.right.right = new TreeNode<>("another another node"); System.out.print("\nPre Order: "); preOrder(root); @@ -18,41 +29,65 @@ public static void main(String[] args) { postOrder(root); System.out.print("\nIn Order: "); inOrder(root); + + System.out.print("\nPre Order: "); + preOrder(stringRoot); + System.out.print("\nPost Order: "); + postOrder(stringRoot); + System.out.print("\nIn Order: "); + inOrder(stringRoot); + + System.out.print("\nPrint Greater: "); + printGreater(root, 7); + + System.out.print("\nPrint node count: "); + System.out.print(countNodes(root)); } // Print a tree rooted at the given node in pre-order - public static void preOrder(TreeNode node) { - // if null return + public static void preOrder(TreeNode node) { // can't use ? in body if (node == null) return; - // print value - System.out.print("["+ node.value +"]"); - // traverse left + System.out.print(" ["+ node.value +"]"); preOrder(node.left); - // traverse right preOrder(node.right); } // Print a tree rooted at the given node in post-order - public static void postOrder(TreeNode node) { - // if null return + public static void postOrder(TreeNode node) { // can use T in body if (node == null) return; - // traverse left postOrder(node.left); - // traverse right postOrder(node.right); - // print value - System.out.print("["+ node.value +"]"); + System.out.print(" ["+ node.value +"]"); + + //List myList = new ArrayList<>(); + //myList.add(node.value); } // Print a tree rooted at the given node in order - public static void inOrder(TreeNode node) { - // if null return + public static void inOrder(TreeNode node) { if (node == null) return; - // traverse left postOrder(node.left); - // print value - System.out.print("["+ node.value +"]"); - // traverse right + System.out.print(" ["+ node.value +"]"); postOrder(node.right); } + + // Print a tree rooted at the given node in pre-order where node values > threshold value + public static void printGreater(TreeNode node, int threshold) { + if (node == null) return; + if (node.value > threshold) System.out.print(" ["+ node.value +"]"); + printGreater(node.left, threshold); + printGreater(node.right, threshold); + } + + public static int countNodes(TreeNode node) { + return countNodes(node, 0); + } + + private static int countNodes(TreeNode node, int count) { + if (node == null) return count; + count++; + count = countNodes(node.left, count); + count = countNodes(node.right, count); + return count; + } } diff --git a/src/TreeNode.java b/src/TreeNode.java index f3ba06c..698a293 100644 --- a/src/TreeNode.java +++ b/src/TreeNode.java @@ -1,14 +1,14 @@ -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; } - public TreeNode(int value) { + public TreeNode(T value) { this.value = value; this.left = null; this.right = null; From 806329496e261187d2cb8c75dbffede8f7af259f Mon Sep 17 00:00:00 2001 From: Jake-G123 Date: Wed, 25 Feb 2026 15:01:28 -0800 Subject: [PATCH 3/3] Completed livecode #4 --- src/Traversal.java | 66 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/src/Traversal.java b/src/Traversal.java index 01d3b9a..1177cc1 100644 --- a/src/Traversal.java +++ b/src/Traversal.java @@ -1,3 +1,9 @@ +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); @@ -41,9 +47,54 @@ public static void main(String[] args) { printGreater(root, 7); System.out.print("\nPrint node count: "); - System.out.print(countNodes(root)); + System.out.print(countNodes(root)+"\n"); + + //System.out.print(toMap(root)); + + TreeNode megaRoot = new TreeNode<>(1); + /* + TreeNode current = megaRoot; + + for (int i = 2; i<=5000; i++) { + current.right = new TreeNode<>(i); + current = current.right; + } + */ + System.out.println("\npreOrderIter: "); + preOrderIter(root); + System.out.println("\nlevelOrder: "); + levelOrder(root); + } + + 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.print(" " + 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.print(" " + current.value); + + queue.add(current.left); + queue.add(current.right); + } + } // Print a tree rooted at the given node in pre-order public static void preOrder(TreeNode node) { // can't use ? in body if (node == null) return; @@ -90,4 +141,17 @@ private static int countNodes(TreeNode node, int count) { count = countNodes(node.right, count); return count; } + public static Map toMap(TreeNode node) { + Map counts = new HashMap<>(); + return toMap(node, counts); + } + private static Map toMap(TreeNode node, Map counts) { + if (node == null) { + return counts; + } + counts.put(node.value, counts.getOrDefault(node.value, 0)+1); + toMap(node.left, counts); + toMap(node.right, counts); + return counts; + } }