C:二叉搜索树操作_我思故我变_新浪博客

struct node {

               int      value;

               struct node*  left;

               struct node*  right;

              };

typedef struct node NODE;

typedef struct node* PNODE;

void new_node(PNODE *n,int value)

{

 *n=(PNODE)malloc (sizeof(NODE));

if(*n!=NULL){  *n->value=value;left right 也赋予空}

void free_node(PNODE *n){

if()free (*n);*n=null;

}}

void free_tree (PNODE *n){
if (*n==NULL) return;

if ((*n!+左树和右数,释放他们。

 free_node (n);

}

/查找节点

PNODE find_node (PNODE n,int value )

{if(n==null){ return null;}

 else if(=)return n;

       else if(<) return find_node (n-left,value);

            else { return find_node (n=>right,value);

}

}

/插入节点

void insert_node (PNODE *n,int value)

{

   if(*n==null){  new_node (n.value);

   else if(value==(*n)->value)  return;

         else if (<) insert_node ((

               else  insert-node();

}

}

//最长路径

int get_max_depth (PNODE n)

{

      int left=0;

int right =0;

if( n==null)  { return 0;}

if( n->left!=null){  left=1+get_max_depth (n->left);}

if(n->right!=null){  right=                  ;}

return  (left>right? left:right);

}

/最短路径,同上

//int get_num_node (PNODE n){if(n=null){return 0;}

if(n->left!=null){   left=get_num_nodes(n->left;}

if (){}

return(left+1+right);

}

//最短路径长度

//最长的路径长度

//删除节点

void  deletenode (PNODE *n)

  

      PNODE tmp=null;

      if(n=null) return;

      if((*n->right==null){  tmp=*n:  *n=(*n)->left; free_node (n);

}

       else if ((*n->left==null){  tmp= *n;  *n=*n->right;  free_node (n);}

       else {

                   for(tmp=*n->right;tmp=>left!=null;tmp=tmp->left)

                   tmp->left=(*n)->lefr;tmp=(*n);(*n=(*n)->right;  free_node (&tmp);

              }

}

void delete_node(PNODE *n,int value){

                

void per+order_tracersal(){}

void in_order-tracersal(){}

void post-order_travesal(){}

}

int main()

{

      char buf[50];

      int option;

      PNODE tree=null;

      PNODE node=NULL;

  while(1)

        

           printf("----------------\n");

           printf('options are :\n\n");

           printf("0 Exit\n");

           printf("1              

           prinftf("2

           ""'   

           """'

            '"""

 

           printf("11 Node count\n\n");

           printf("select an option:");

           fgets(buf,sizeof(buf).stdin);

           sscanf(buf,5i",&option);

           if()fprntf()

            continue.

   }

switch(option)

{case 0:

 

 case1:

 

 case2:

 

 

 

 

 case 11:break;

}

return 0;

}

 

 

 

 

 

 

 

 

 

 

已投稿到:
郑重声明:资讯 【C:二叉搜索树操作_我思故我变_新浪博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——