4.6 使用元組-平衡二叉樹
阿新 • • 發佈:2018-12-23
combine({K1,V1,H1,S1,B1},AK,AV, {K2,V2,H2,S2,B2},BK,BV, {K3,V3,H3,S3,B3} ) when H2 > H1, H2 > H3 -> {K2,V2,H1 + 2, {AK,AV,H1 + 1,{K1,V1,H1,S1,B1},S2}, {BK,BV,H3 + 1,B2,{K3,V3,H3,S3,B3}} }; combine({K1,V1,H1,S1,B1},AK,AV, {K2,V2,H2,S2,B2},BK,BV, {K3,V3,H3,S3,B3} ) when H1 >= H2, H1 >= H3 -> HB = max_add_1(H2,H3), HA = max_add_1(H1,HB), {AK,AV,HA, {K1,V1,H1,S1,B1}, {BK,BV,HB,{K2,V2,H2,S2,B2},{K3,V3,H3,S3,B3}} }; combine({K1,V1,H1,S1,B1},AK,AV, {K2,V2,H2,S2,B2},BK,BV, {K3,V3,H3,S3,B3} ) when H3 >= H1, H3 >= H2 -> HA = max_add_1(H1,H2), HB = max_add_1(HA,H3), {BK,BV,HB , {AK,AV,HA,{K1,V1,H1,S1,B1},{K2,V2,H2,S2,B2}}, {K3,V3,H3,S3,B3} }. max_add_1(X,Y) when X =< Y -> Y + 1; max_add_1(X,Y) when X > Y -> X + 1.