package com.iluwatar.nullobject;

/**
 * 
 * Null Object pattern replaces null values with neutral objects. Many times this simplifies
 * algorithms since no extra null checks are needed.
 * <p>
 * In this example we build a binary tree where the nodes are either normal or Null Objects. No null
 * values are used in the tree making the traversal easy.
 *
 */
public class App {
  /**
   * Program entry point
   * 
   * @param args command line args
   */
  public static void main(String[] args) {

    Node root =
        new NodeImpl("1", new NodeImpl("11", new NodeImpl("111", NullNode.getInstance(),
            NullNode.getInstance()), NullNode.getInstance()), new NodeImpl("12",
            NullNode.getInstance(), new NodeImpl("122", NullNode.getInstance(),
                NullNode.getInstance())));

    root.walk();
  }
}
