treenode 数据更新

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;

猜你喜欢

转载自linfeng0306.iteye.com/blog/2289955
今日推荐