久々[D言語]を揉む

import std.stdio;

void main() {
  Node n1 = new Node(1);
  Node n2 = new Node(2);
  Node n3 = new Node(3);
  Node n4 = new Node(4);
  Node n5 = new Node(5);
  Node n6 = new Node(6);

  n2.push(n1);
  n2.push(n6);
  n2.push(n4);
  n2.push(n5);
  n2.search(4);
}

class Node
{
  public:
    int key;
    Node left = null;
    Node right = null;
  public:
    this(int _key) {
      key = _key;
    }   
    void search(int _key) {
      if (key is _key) {
        printf("hit.\n");
      }   
      else if (key >= _key) {
        if (left is null) {
        } else {
          left.search(_key);
        }   
      }   
      else if (key < _key) {
        if (right is null) {
        } else {
          right.search(_key);
        }   
      }   
    }
    void push(Node node) {
      if (key >= node.key) {
        if (left is null) {
          left = node;
        } else {
          left.push(node);
        }   
      }   
      if (key < node.key) {
        if (right is null) {
          right = node;
        } else {
          right.push(node);
        }
      }
    }
}