Close
Close Window

CSC 201 Data Structures

Chapter 6 Binary Trees

Show Source |    | About   «  5.11. Sorting Summary Exercises   ::   Contents   ::   6.2. Binary Trees Chapter Introduction  »

6.1. General Trees

6.1.1. General Trees

6.1.1.1. General Trees

Created with Raphaël 2.1.2
C1
C2
C3
V
P
R
S1
S2
Children of V
Subtree rooted at V
Siblings of V
Ancestors of V
Root
Parent of V

6.1.1.2. General Tree ADT

// General tree node ADT
public interface GTNode {
  public Object value();
  public boolean isLeaf();
  public GTNode parent();
  public GTNode leftmostChild();
  public GTNode rightSibling();
  public void setValue(Object value);
  public void setParent(GTNode par);
  public void insertFirst(GTNode n);
  public void insertNext(GTNode n);
  public void removeFirst();
  public void removeNext();
}

// General tree ADT
public interface GenTree {
  public void clear();      // Clear the tree
  public GTNode root();     // Return the root
  // Make the tree have a new root, give first child and sib
  public void newroot(Object value, GTNode first, GTNode sib);
  public void newleftchild(E value); // Add left child
}

6.1.1.3. General Tree Traversal

1 / 41 Settings
<<<>>>

Preorder traversals start by processing the root node.

Created with Raphaël 2.1.2
    Created with Raphaël 2.1.2
    R
    A
    B
    C
    D
    E
    F
    rt
    Proficient Saving... Error Saving
    Server Error
    Resubmit

    6.1.1.4. Rep: Lists of Children

    The "list of children" implementation for general trees.

    6.1.1.5. Rep: Dynamic Node (Array)

    A dynamic general tree with fixed-size arrays

    6.1.1.6. Rep: Dynamic Node (linked list)

    A dynamic general tree with linked lists of child pointers

    6.1.1.7. Rep: Lift-Child/Right-Sibling

    Converting from a forest of general trees to a binary tree

    6.1.1.8. Serialization

    Serialization is the process of storing an object as a series of bytes.

    A sequential tree serialization typically stores the node values as they would be enumerated by a preorder traversal, along with sufficient information to describe the tree’s shape.

    6.1.1.9. Binary tree serialization

    1 / 23 Settings
    <<<>>>

    The sequential representation in the array was generated by a simple preorder traversal. Now we will see how to reconstruct the original tree.

    Created with Raphaël 2.1.2
    1. A
    2. B
    3. /
    4. D
    5. /
    6. /
    7. C
    8. E
    9. G
    10. /
    11. /
    12. /
    13. F
    14. H
    15. /
    16. /
    17. I
    18. /
    19. /
    Created with Raphaël 2.1.2
    Proficient Saving... Error Saving
    Server Error
    Resubmit

    6.1.1.10. Alternate serialization

    1 / 20 Settings
    <<<>>>

    The sequential representation in the array was generated by a simple preorder traversal. Now we will see how to reconstruct the original tree.

    Created with Raphaël 2.1.2
    1. A'
    2. B'
    3. /
    4. D
    5. C'
    6. E'
    7. G
    8. /
    9. F'
    10. H
    11. I
    Created with Raphaël 2.1.2
    Proficient Saving... Error Saving
    Server Error
    Resubmit

    6.1.1.11. Bit Vector Serialization

    1 / 17 Settings
    <<<>>>

    The array shows the structure for a full binary tree. A preorder enumeration would go with this to get the values. This visualization shows a reconstruction of the tree shape.

    Created with Raphaël 2.1.2
    1. 1
    2. 1
    3. 0
    4. 0
    5. 1
    6. 1
    7. 0
    8. 0
    9. 1
    10. 0
    11. 0
    Created with Raphaël 2.1.2
    Proficient Saving... Error Saving
    Server Error
    Resubmit

    6.1.1.12. General Tree Serialization

    1 / 16 Settings
    <<<>>>

    We will reconstruct a general tree from the sequential representation shown in the array.

    Created with Raphaël 2.1.2
    1. R
    2. A
    3. C
    4. )
    5. D
    6. )
    7. E
    8. )
    9. )
    10. B
    11. F
    12. )
    13. )
    14. )
    Created with Raphaël 2.1.2
    Proficient Saving... Error Saving
    Server Error
    Resubmit

       «  5.11. Sorting Summary Exercises   ::   Contents   ::   6.2. Binary Trees Chapter Introduction  »

    nsf
    Close Window