欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

treenode 数据更新 博客分类: 数据处理 treenodeleftright

程序员文章站 2024-03-20 09:07:40
...

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;