ツリーの巡回は再帰を使ったほうがいいだろう。
リストの巡回はループでいいんじゃね?