🚀 Day 40 of My Java DSA Journey Today I worked on an interesting Binary Tree problem: 🌳 Flatten Binary Tree to Linked List 💡 Problem idea: Convert a binary tree into a linked list (in-place) following preorder traversal. 🔍 Approach I used: • Performed preorder traversal (Root → Left → Right) • Stored nodes in a list • Reconnected nodes such that: Left pointer → null Right pointer → next node in preorder ⚡ Key Learning: Understanding traversal order is crucial — preorder ensures the correct sequence for flattening. 🔥 What improved today: • Tree traversal skills • Pointer manipulation • Converting tree structure into linear form 🎯 Takeaway: Complex transformations become easier when broken into simple traversal steps. #Day40 #90DaysOfCoding #Java #DSA #BinaryTree #Recursion #Preorder #ProblemSolving
Flattening Binary Tree to Linked List with Java
More Relevant Posts
-
Day 60 of My Java DSA Journey Today I solved an important Binary Search Tree problem: 💡 Recover Binary Search Tree (RBST) 🧠 Approach: • Performed inorder traversal of BST • Identified violations where the inorder sequence is not sorted • Tracked misplaced nodes using three pointers: first (first violation) middle (adjacent swap case) last (non-adjacent swap case) • Swapped the incorrect node values to restore BST properties 🔍 Key Insight: Inorder traversal of a BST should always be sorted. If two nodes are swapped, we can detect them by finding “inversion points” in the inorder sequence and fix the tree without changing structure. ⚡ What I learned: • Strong understanding of BST inorder properties • How to detect structural violations in trees • Handling adjacent vs non-adjacent swapped nodes • Importance of pointer tracking in recursive traversal 🔥 Complexity: • Time: O(n) • Space: O(h) (recursion stack) 🎯 Takeaway: Tree problems are not just about traversal — they test your ability to observe patterns in structure and fix them with minimal changes. #Day60 #90DaysOfCoding #DSA #BST #Java #ProblemSolving #BinaryTree
To view or add a comment, sign in
-
-
🚀 Day 53 of My Java DSA Journey Today I worked on a Linked List pointer manipulation problem. 💡 Problem: Merge In Between Linked Lists 👉 Given two linked lists, remove nodes from index a to b in list1 and insert list2 in their place. 🧠 Approach: • Traversed to node at position a-1 • Traversed to node at position b • Found the last node of list2 • Reconnected pointers to merge lists efficiently 🔗 Key Idea: Instead of creating new nodes, I directly manipulated pointers to connect: (a-1) → list2 end of list2 → (b+1) ⚡ What I learned: • Pointer manipulation is crucial in linked lists • Traversal control matters for correct connections • Efficient solutions avoid extra memory 🎯 Takeaway: Mastering pointer logic is key to solving Linked List problems. #Day53 #90DaysOfCoding #DSA #Java #LinkedList #CodingJourney
To view or add a comment, sign in
-
-
🚀 Day 10 – Race Condition & Synchronization in Java After learning multithreading, I explored a common issue: Race Condition 👉 It happens when multiple threads access and modify shared data at the same time. Example: class Counter { int count = 0; void increment() { count++; } } If multiple threads call "increment()" simultaneously: 👉 Expected: consistent count 👉 Reality: unpredictable results 💡 Why? Because "count++" is not atomic (it involves multiple steps internally) --- 👉 Solution: Synchronization synchronized void increment() { count++; } ✔ Ensures only one thread executes the method at a time ✔ Prevents data inconsistency ⚠️ Insight: Synchronization solves the problem, but excessive use can impact performance. 💡 Real takeaway: - Multithreading = powerful - But without control → leads to subtle bugs - Balance between safety and performance is key #Java #BackendDevelopment #Multithreading #Synchronization #LearningInPublic
To view or add a comment, sign in
-
🚀 Day 37 / 180 – DSA with Java 🚀 📘 Topic Covered: Arrays & Two-Pointer Technique 🧩 Problem Solved: Squares of a Sorted Array Problem: Given a sorted array of integers (including negatives), return a new array of the squares of each number, also sorted in non-decreasing order. Approach: Used a two-pointer approach from both ends of the array. Compared squares of elements and filled the result array from the end to maintain sorted order efficiently. Key Learning: ✔️ Handling negative values in sorted arrays ✔️ Using two-pointer technique for optimal solutions ✔️ Avoiding extra sorting to achieve O(n) time complexity If you’re also preparing for DSA, let’s connect and learn together 🤝 #DSA #Java #180DaysOfCode #LearningInPublic #Arrays #ProblemSolving #Consistency
To view or add a comment, sign in
-
-
Day 33 of Learning Java Today I learned about Return Types in Java methods, and it finally started to make sense how methods give results back! Here’s what I understood: 🔹 Every method has a return type 🔹 It tells what kind of value the method will give back 🔹 There are mainly two types: Primitive Data Types (PDT) : • byte • short • int • long • char • String • float • double • boolean Reference Data Types (RDT) : • Arrays • Classes • Interfaces • Annotations • Enums 🔹 A method can also return an object 🔹 The "return" keyword is used to send the value back 🔹 If nothing is returned, we use "void" Thanks to my mentor Ashim Prem Mahto for the clear explanations and for always clearing my doubts. #Java #LearningJava #ProgrammingJourney #CodingLife #JavaBasics #SoftwareDevelopment #DeveloperJourney #TechLearning #StudentLife
To view or add a comment, sign in
-
-
🚀 Day 57 of My Java DSA Journey Today I worked on a classic Dynamic Programming problem: 💡 Subset Sum Problem 🧠 Approach: • Used recursion with memoization • At each step, decided whether to include or exclude an element • Stored intermediate results to optimize performance 🔍 Key Insight: A subset with sum k exists if: We can form k without current element OR We can form k - arr[i] including current element ⚡ What I learned: • DP pattern similar to Knapsack • Importance of proper memoization • Handling boolean DP states 🔥 Complexity: • Time: O(n × k) • Space: O(n × k) 🎯 Takeaway: Many DP problems are variations of a few core patterns. #Day57 #90DaysOfCoding #DSA #DynamicProgramming #Java
To view or add a comment, sign in
-
-
Mastering Java & DSA Through LeetCode Day 34 Today I solved a Medium-level Tree problem that strengthened my understanding of Prefix Sum + DFS — a powerful pattern used in many interview questions. LeetCode Problem: 437. Path Sum III Problem Summary: Given a binary tree and a target sum, we need to find the number of paths where the sum of node values equals the target. The path must go downward (parent → child), but it doesn’t need to start from the root. Key Insight: Instead of checking all possible paths (which is inefficient), we use: Prefix Sum HashMap to store frequencies DFS traversal This helps reduce time complexity from O(n²) → O(n) ⚡ Approach: Maintain a running sum while traversing the tree Check if (currentSum - target) exists in the map Use backtracking to maintain correct state What I Learned: How prefix sum works in trees (not just arrays!) Optimizing brute-force solutions Importance of hashmap in reducing complexity Consistency Update: Day 34 of solving DSA problems daily 💪 Small steps every day = big results over time #LeetCode #Java #DSA #CodingJourney #100DaysOfCode #SoftwareEngineering #PlacementPreparation #CodingInterview
To view or add a comment, sign in
-
-
🚀 Day 40 / 180 – DSA with Java 🚀 📘 Topic Covered: Binary Exponentiation (Fast Power) 🧩 Problem Solved: Pow(x, n) Problem: Implement a function to calculate x raised to the power n, handling both positive and negative values of n. Approach: Used Binary Exponentiation to reduce time complexity. Repeatedly squared the base and halved the exponent, multiplying the result only when needed. Also handled negative powers by taking the reciprocal. Key Learning: ✔️ Optimizing from O(n) to O(log n) ✔️ Understanding divide-and-conquer in exponentiation ✔️ Handling edge cases like negative powers If you’re also preparing for DSA, let’s connect and learn together 🤝 #DSA #Java #180DaysOfCode #LearningInPublic #ProblemSolving #Consistency
To view or add a comment, sign in
-
-
Day 89 of #100DaysOfLeetCode 💻✅ Solved #15. 3Sum problem in Java. Approach: • Sorted the array first • Fixed one element and used Two Pointers for the rest • Skipped duplicates to avoid repeated triplets • Adjusted pointers based on sum comparison Performance: ✓ Runtime: 30 ms (Beats 87.77% submissions) ✓ Memory: 59.02 MB (Beats 77.30% submissions) Key Learning: ✓ Mastered Two Pointer technique with sorting ✓ Learned handling duplicates efficiently ✓ Improved problem-solving for combination-based problems Learning one problem every single day 🚀 #Java #LeetCode #DSA #TwoPointers #Arrays #Sorting #ProblemSolving #CodingJourney #100DaysOfCode
To view or add a comment, sign in
-
-
🚀 Java DSA Progress Update I’ve solved 125/310 problems (~40%) as part of my structured Java DSA roadmap. ✔️ Strong in: Arrays, Strings, Linked Lists, Binary Search ⚡ Focusing next on: Heap, Graphs, Dynamic Programming, Sliding Window 📌 Approach: Pattern-based problem solving Time & space analysis Learning from mistakes Re-solving for retention 🎯 Goal: Become interview-ready in 30 days with strong problem-solving fundamentals. Consistent progress > perfection. #Java #DSA #LeetCode #ProblemSolving #SoftwareEngineering
To view or add a comment, sign in
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development