Learning Journal - Unit 4 This week, I delved into the intricacies of Binary Trees, a fundamental data structure in computer science. The unit covered various topics such as the Full Binary Tree Theorem, tree traversals, binary tree implementations using pointers and arrays, search trees, heaps, priority queues, and Huffman Coding Trees. As part of the learning process, I engaged in reading assignments, discussion forums, and a practical assignment focusing on implementing a binary search tree algorithm in Java. I started the week by reading the assigned chapters, with a primary focus on Chapter 5 in "A Practical Introduction to Data Structures and Algorithm Analysis" (Shaffer, 2011). The readings provided a solid theoretical foundation, helping me understand the characteristics, notation, and structure of binary trees. I also reviewed additional recommended chapters on Binary Search Trees, Heap, and AVL Trees, which expanded my knowledge of different tree implementations. For the practical application, I actively participated in the discussion forum, where I defined a binary tree in my own words and discussed its implementation. I explored key terminology such as Root, Node, Sub-Tree, Height, Depth, and Leaf, providing a comprehensive understanding of these essential elements. The main highlight of the unit was the binary tree search algorithm assignment. In this hands-on task, I implemented a Java algorithm for constructing and traversing a binary search tree. The assignment emphasized user input for populating the tree and included a search functionality, reporting the number of iterations required to find a specific value. I used the provided example code as a reference to guide my implementation. The readings deepened my appreciation for the efficiency of binary trees in various applications, particularly in searching and organizing data. The theoretical understanding gained from the readings complemented the practical implementation, creating a holistic learning experience. Engaging in the discussion forum allowed me to articulate my understanding of binary trees and receive feedback from peers. Explaining concepts in my own words enhanced my grasp of the material, and the interaction with classmates provided valuable perspectives. The assignment was challenging yet rewarding. Implementing the binary search tree algorithm required careful consideration of user input, tree structure, and search logic. The iterative nature of the algorithm brought forth a realization of the efficiency gains achieved through binary tree structures. I received constructive feedback on my discussion forum post, which helped clarify certain concepts and refine my understanding. The exchange of ideas with peers provided alternative viewpoints and insights into different approaches to binary tree implementation. I felt a sense of accomplishment in successfully implementing the binary search tree algorithm. The challenging aspects of the assignment fostered a growth mindset, encouraging me to persistently tackle problems. My attitude towards binary trees evolved from a theoretical understanding to a practical appreciation of their applications. The hands-on experience allowed me to see the direct impact of efficient data structures on algorithmic performance. The unit deepened my understanding of binary trees, their implementations, and applications. I gained proficiency in defining and constructing binary trees, understanding