困っています.助けてください.

まず作りたいものを以下に記します.

クラスObjのオブジェクトが構築されると,
そのオブジェクト内でクラスObjのオブジェクトが0~2個生成される.
(生成されるオブジェクトの個数は一様乱数で決定される)
結果的に木構造のようなデータ構造になる.

クラスObjのオブジェクトはシリアルナンバと自分を作ったオブジェクト(親)へのポインタを持っている.

クラスObjは自分を作った親をたどることで,どのようにして(どのオブジェクトを親として)生成されたかを知ることができる.


で,作ってみたものを以下に張り付けておきます.

https://wandbox.org/permlink/lXq19mN1URMQhyh5

上記のプログラムで発生している問題を以下に記述します.

起点となるクラスObjのオブジェクトobjが生成された時点では,
各オブジェクトは自分自身を生成してくれた親オブジェクトへのポインタを正しく保持しているようなのですが,その後,メソッドrootsを呼んだときには親オブジェクトへのポインタが訳の分からないアドレスを指すことがあるようです.

なにがいけないのか,どうすれば意図した通りに動いてくれるのかご教授くださると助かります.

よろしくお願いいたします.