From cceef4121a5be52aacd334c277af8739d6f66720 Mon Sep 17 00:00:00 2001 From: Amal Bijoy Date: Tue, 7 Apr 2026 11:53:23 +0530 Subject: [PATCH] Refactor list/tree nodes into structure-owned nested classes --- .../Linked-Lists/CircularLinkedLists.java | 28 +++++++-------- .../Linked-Lists/DoubleLinkedList.java | 32 ++++++++--------- Data-Structures/Linked-Lists/LinkedList.java | 25 ++++++------- Data-Structures/Trees/AVLTree.java | 21 ++++++----- Data-Structures/Trees/BinarySearchTree.java | 18 +++++----- Data-Structures/Trees/BinaryTree.java | 36 ++++++++++--------- .../Trees/BinaryTreeImplementation.java | 2 +- 7 files changed, 84 insertions(+), 78 deletions(-) diff --git a/Data-Structures/Linked-Lists/CircularLinkedLists.java b/Data-Structures/Linked-Lists/CircularLinkedLists.java index fef3a82..8dac3ee 100644 --- a/Data-Structures/Linked-Lists/CircularLinkedLists.java +++ b/Data-Structures/Linked-Lists/CircularLinkedLists.java @@ -1,17 +1,17 @@ -import java.util.Scanner; - -class Node { - int data; - Node next; - - Node(int data) { - this.data = data; - this.next = null; - } -} - -class CircularLinkedList { - private Node tail; +import java.util.Scanner; + +class CircularLinkedList { + private static class Node { + int data; + Node next; + + Node(int data) { + this.data = data; + this.next = null; + } + } + + private Node tail; public void insertAtEnd(int data) { Node newNode = new Node(data); diff --git a/Data-Structures/Linked-Lists/DoubleLinkedList.java b/Data-Structures/Linked-Lists/DoubleLinkedList.java index 204ccd9..2a861cf 100644 --- a/Data-Structures/Linked-Lists/DoubleLinkedList.java +++ b/Data-Structures/Linked-Lists/DoubleLinkedList.java @@ -1,19 +1,19 @@ -import java.util.Scanner; - -class Node { - int data; - Node prev; - Node next; - - Node(int data) { - this.data = data; - this.prev = null; - this.next = null; - } -} - -class DoublyLinkedList { - private Node head; +import java.util.Scanner; + +class DoublyLinkedList { + private static class Node { + int data; + Node prev; + Node next; + + Node(int data) { + this.data = data; + this.prev = null; + this.next = null; + } + } + + private Node head; public void insertAtBeginning(int data) { Node newNode = new Node(data); diff --git a/Data-Structures/Linked-Lists/LinkedList.java b/Data-Structures/Linked-Lists/LinkedList.java index 0e4e156..5b6c28c 100644 --- a/Data-Structures/Linked-Lists/LinkedList.java +++ b/Data-Structures/Linked-Lists/LinkedList.java @@ -1,15 +1,16 @@ -import java.util.Scanner; - -class Node { - int data; - Node next; - Node(int data) { - this.data = data; - this.next = null; - } -} -class SinglyLinkedList { - private Node head; +import java.util.Scanner; +class SinglyLinkedList { + private static class Node { + int data; + Node next; + + Node(int data) { + this.data = data; + this.next = null; + } + } + + private Node head; // ---- Insert At Beginning ---- public void insertAtBeginning(int data) { Node newNode = new Node(data); diff --git a/Data-Structures/Trees/AVLTree.java b/Data-Structures/Trees/AVLTree.java index 5a1c796..6c30d4d 100644 --- a/Data-Structures/Trees/AVLTree.java +++ b/Data-Structures/Trees/AVLTree.java @@ -1,19 +1,18 @@ import java.util.*; public class AVLTree { - - static class Node { - int data; - int height; - Node left, right; - - Node(int data) { - this.data = data; - this.height = 1; + static class AVL { + private static class Node { + int data; + int height; + Node left, right; + + Node(int data) { + this.data = data; + this.height = 1; + } } - } - static class AVL { Node root; // -------- UTILITIES -------- diff --git a/Data-Structures/Trees/BinarySearchTree.java b/Data-Structures/Trees/BinarySearchTree.java index bbac4a7..543f40c 100644 --- a/Data-Structures/Trees/BinarySearchTree.java +++ b/Data-Structures/Trees/BinarySearchTree.java @@ -1,15 +1,17 @@ import java.util.*; public class BinarySearchTree { - static class Node { - int data; - Node left, right; - Node (int d) { - data = d; - left = right = null; - } - } static class BST { + private static class Node { + int data; + Node left, right; + + Node(int d) { + data = d; + left = right = null; + } + } + Node root; int size; BST() {root = null; size = 0;} diff --git a/Data-Structures/Trees/BinaryTree.java b/Data-Structures/Trees/BinaryTree.java index 8b8eaa3..7f8eec0 100644 --- a/Data-Structures/Trees/BinaryTree.java +++ b/Data-Structures/Trees/BinaryTree.java @@ -1,19 +1,28 @@ // Manual tree traversal demo: // This example builds a tree by wiring nodes manually and prints DFS traversals. -class TraversalNode { - int data; - TraversalNode left; - TraversalNode right; - - TraversalNode(int key) { - data = key; - left = right = null; +class ManualTraversalTree { + private static class TraversalNode { + int data; + TraversalNode left; + TraversalNode right; + + TraversalNode(int key) { + data = key; + left = right = null; + } } -} -class ManualTraversalTree { TraversalNode root = null; + void buildSampleTree() { + root = new TraversalNode(27); + root.left = new TraversalNode(12); + root.right = new TraversalNode(3); + root.left.left = new TraversalNode(44); + root.left.right = new TraversalNode(17); + root.right.left = new TraversalNode(56); + } + void inorderTraversal(TraversalNode node) { if (node != null) { inorderTraversal(node.left); @@ -44,12 +53,7 @@ public static void main(String[] args) { ManualTraversalTree tree = new ManualTraversalTree(); // Manually building a sample tree for traversal demonstration. - tree.root = new TraversalNode(27); - tree.root.left = new TraversalNode(12); - tree.root.right = new TraversalNode(3); - tree.root.left.left = new TraversalNode(44); - tree.root.left.right = new TraversalNode(17); - tree.root.right.left = new TraversalNode(56); + tree.buildSampleTree(); System.out.println("Inorder traversal:"); tree.inorderTraversal(tree.root); diff --git a/Data-Structures/Trees/BinaryTreeImplementation.java b/Data-Structures/Trees/BinaryTreeImplementation.java index 8702105..613acfb 100644 --- a/Data-Structures/Trees/BinaryTreeImplementation.java +++ b/Data-Structures/Trees/BinaryTreeImplementation.java @@ -2,7 +2,7 @@ // Delete handles all cases explicitly: // 1) leaf node, 2) node with one child, 3) node with two children. public class BinaryTreeImplementation { - static class Node { + private static class Node { int data; Node left; Node right;