12.General Trees§

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
}

General Tree Traversal

Settings

Proficient Saving... Error Saving
Server Error
Resubmit

Rep: Lists of Children

The "list of children" implementation for general trees.

Rep: Dynamic Node (Array)

A dynamic general tree with fixed-size arrays

Rep: Dynamic Node (linked list)

A dynamic general tree with linked lists of child pointers

Rep: Left-Child/Right-Sibling

Converting from a forest of general trees to a binary tree

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.

Binary tree serialization

Settings

Proficient Saving... Error Saving
Server Error
Resubmit

Alternate serialization

Settings

Proficient Saving... Error Saving
Server Error
Resubmit

Bit Vector Serialization

Settings

Proficient Saving... Error Saving
Server Error
Resubmit

General Tree Serialization

Settings

Proficient Saving... Error Saving
Server Error
Resubmit