| Branch(b1,i1,l1,r1), Branch(b2,i2,l2,r2) ->
b1 == b2 && i1 == i2 && (Node.equal l1 l2) && (Node.equal r1 r2)
| Branch(b1,i1,l1,r1), Branch(b2,i2,l2,r2) ->
b1 == b2 && i1 == i2 && (Node.equal l1 l2) && (Node.equal r1 r2)
| Branch (p1,m1,l1,r1), Branch (p2,m2,l2,r2) ->
if m1 == m2 && p1 == p2 then
intersect l1 l2 || intersect r1 r2
| Branch (p1,m1,l1,r1), Branch (p2,m2,l2,r2) ->
if m1 == m2 && p1 == p2 then
intersect l1 l2 || intersect r1 r2