부모가 자식을 소유
children은 leaf를 담은
Rc<Node>를 보관합니다.
부모는 Rc<Node>로 자식을 소유하고, 자식은
Weak<Node>로 부모를 가리켜 해제를 막지 않습니다.
children은 leaf를 담은
Rc<Node>를 보관합니다.
parent는 Weak<Node>라서
소유권을 만들지 않습니다.
부모가 이미 버려졌다면 upgrade는
None을 반환합니다.
strong 1, weak 0으로 시작합니다.
branch는 strong 1, weak 1이고 leaf는 strong 2가 됩니다.
branch strong이 0이 되어 해제되고 leaf parent는 None이 됩니다.
순환을 피하려면 소유 관계와 관찰 관계를 나눕니다. 자식에서 부모로 가는
참조는 Weak<T>로 두어 strong_count를 붙잡지 않게
합니다.