無限ループを避けるための措置かもね
それか単にバグなのか
didSetをこんな実装にすれば一応親を辿ってくけど

didSet {
var n: Node! = self
while n.parent != nil {
n.parent!.val = self.val
n = n.parent
}
}