1、用父节点的left更新,每次更新都会更新与其同级的子节点及 其父节点 及与其父节点同级的节点
if has parent
pleft = parent left
update left = left+2 where left >pleft
update right = right+2 where right>pleft
insert left=pleft +1 ,right = pleft +2
else
insert into left = max(right) +1,
right = left +2
事例:
父节点1 : 1 2
插入子节点:父节点1为 1 4 ,子节点1为 2 3 ;
插入子节点:父节点1为 1 6 ,子节点1为 4 5,子节点2为 2 3;
插入父节点:父节点1为 1 6 ,子节点1为 4 5,子节点2为 2 3;父节点2为7 8;
插入子节点:父节点1为 1 8,子节点1为 4 5,子节点2为 6 7,子节点3为2 3;父节点2为 9 10;
2、用父节点的right更新,
每次更新其父节点 及与其父节点同级的节点(
建议使用)
if has parent
pright = parent right
update left = left+2 where left >= pright
update right = right+2 where right>= pright
insert left=pright ,right = pright + 1
else
insert into left = max(right) +1,
right = left +2
事例:
父节点1 : 1 2
插入子节点:父节点1为 1 4 ,子节点1为 2 3 ;
插入子节点:父节点1为 1 6 ,子节点1为 2 3,子节点2为 4 5;
插入父节点:父节点1为 1 6 ,子节点1为 2 3,子节点2为 4 5;父节点2为7 8;
插入子节点:父节点1为 1 8 ,子节点1为 2 3,子节点2为 4 5,子节点3为6 7;父节点2为 9 10;