第七节 二叉排序树
一、概念 
    所谓二叉排序树是指具有下列性质的非空二叉树
    ⑴ 若根结点的左子树不空,则左子树的所有结点值均小于根结点值;
    ⑵ 若根结点的右子树不空,则右子树的所有结点值均不小于根结点值;
    ⑶ 根结的左右树也分别为二叉排序树;
    显然,对二叉排序树进行中序遍历,可得出结点值递增的排序序列。 
 
    
        
            | 
             {假设待排序的数存在数组a中} 
            procedure createtree; 
            begin 
              fillchar(b,sizeof(b),0); 
              b[1].data:=a[1];     {二叉排序树初始化} 
              for i:=2 to n do  
                begin 
                  b[i] .data:=a[i]; 
                  p:=1; 
                  while true do 
                   begin 
                    if a[i]<b[p].data  {若a[i]<b[p].data,顺左指针方向寻找顶点i的插入位置} 
                       then if b[p].l<>0  
                             then p:=b[p].l 
                             else begin b[p].l:=i;break;end 
                       else             {若a[i]≥b[p].data 时顺右指针方向寻找顶点i的插入位置} 
                           if b[p].r<>0 
                             then p:=b[p].r 
                             else begin b[p].r:=i; break; end; 
                   end;{while} 
               end;{for} 
            end;{createtree} 
             |