private Node getNext(Node u)
    {
        if (u.right == null)
        {
            Node n = u;
            do {
                u = n;
                n = n.parent;
                if (n == null)  return null;
            } while (u == n.right); //got nullpointer
            return n;
        }
        Node n = u.right;
        while (n.left != null)
            n = n.left;
        return n;
    }