Lecture 03/06: CSC1302

Binary Trees Overview

  • Binary Trees Definition: A binary tree is a data structure in which each node has at most two children referred to as left child and right child.

Implementation of Binary Trees

  • Binary Tree using an Array:

    • Utilizes two main rules for placement:

      • If the parent index is i, the left child is placed at index 2i + 1.

      • If the parent index is i, the right child is placed at index 2i + 2.

    • Advantages:

      • Memory Efficiency: Arrays store data in consecutive memory locations, leading to less memory overhead.

      • Simplicity of Implementation: Implementing a binary tree with a Python list is straightforward compared to other methods.

    • Disadvantages:

      • Array representation is effective only for complete binary trees, where all levels are fully filled except possibly the last.

      • Inefficient for operations like insertion, deletion, and traversal in non-ideal cases where the tree is not complete.

Complete Binary Trees

  • Definition: A binary tree where every level, except possibly the last, is fully filled.

  • Example of representation in arrays and the issue with non-completeness:

    • If parts of the tree are removed, it leads to wasted space represented by None values, which is inefficient.

Class-based Representation of Binary Trees

  • Using classes for nodes allows for a more flexible structure.

  • Essential components for binary tree nodes:

    • Value: Holds the data of the node.

    • Left Child: Reference to its left child node.

    • Right Child: Reference to its right child node.

  • Example of constructing a binary tree using objects.

Tree Traversal Methods

  • Definition: Accessing all items in a binary tree.

  • Types of Traversal:

    • Preorder Traversal: Visit the root first, then traverse the left subtree, followed by the right subtree.

    • Inorder Traversal: Traverse the left subtree first, visit the root, and then traverse the right subtree.

    • Postorder Traversal: Traverse the left subtree, then the right subtree, and visit the root last.

Example Traversal Results

  • Given a binary tree:

    • Preorder Result: root, left subtree, right subtree.

    • Inorder Result: left subtree, root, right subtree.

    • Postorder Result: left subtree, right subtree, root.

Additional Topics

  • Looking forward to other data structures in future classes:

    • Stacks: Follow Last In First Out (LIFO).

      • Operations include push (add an item), pop (remove the top item), and top (view the top item).

      • Uses include recursion management and undo/redo buttons in software applications.

    • Queues: Follow First In First Out (FIFO).

      • Operations include enqueue (add an item) and dequeue (remove an item).

      • Commonly used in real-life scenarios like ticket lines and call centers.

    • Linked Lists: Unlike arrays, linked lists do not store elements in contiguous memory locations.

      • Each node contains a value and a reference to the next node, which allows for dynamic memory usage.

      • Demonstrates how to construct a linked list using nodes and how to add new nodes.

robot