⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 depth.c

📁 C程序自动测试程序系统,主要是测试数据结构中的几个经典算法:关于排序,树的遍历等.
💻 C
字号:
/*Function:void search,查找结点*/
/*Function:void creat,建树*/
/*Function:int depth,计算树高*/
/*Function:void r_posorder,后序遍历*/
/*Start*/

#include "Stdio.h"
#include "Conio.h"
#define M 10

typedef struct node{
                     int data;
                     struct node *lchild,*rchild;
                   }NODE;

void search(NODE *t,int a,NODE **p_p,NODE **p_q)
{
  *p_p=NULL;
  *p_q=t;
  while(*p_q!=NULL)
  {
    if((*p_q)->data==a)return;
    *p_p=*p_q;
    if(a<(*p_q)->data)
      *p_q=(*p_q)->lchild;
    else *p_q=(*p_q)->rchild;
  }
}

void creat(NODE **p_t,int a)
{
  NODE *p,*q,*r;
  search(*p_t,a,&p,&q);
  if(q!=NULL)return;
  r=(NODE*)malloc(sizeof(NODE));
  r->data=a;
  r->lchild=r->rchild=NULL;
  if(p==NULL) *p_t=r;
  else if(p->data>a)
     p->lchild=r;
  else
     p->rchild=r;
}

int depth(NODE *t)
{
  int dep1,dep2;
  if(t==NULL)return(-1);
  else
  {
    dep1=depth(t->lchild);
    dep2=depth(t->rchild);
    if(dep1>=dep2) return(dep1+1);
    else return(dep2+1);
  }
}

void r_posorder(NODE *t)
{
  if(t!=NULL)
  {
    r_posorder(t->lchild);
    r_posorder(t->rchild);
    printf("%d ",t->data);
  }
 
}

main()
{
  NODE *tree;
  int i,s[M];
  for(i=0;i<M;i++)
     scanf("%d",&s[i]);
  tree=(NODE*)malloc(sizeof(NODE));
  tree->data=s[0];
  tree->lchild=tree->rchild=NULL;
  for(i=1;i<M;i++)
     creat(&tree,s[i]);
  i=depth(tree);
  r_posorder(tree); printf("\n");
  printf("The depth is:");
  printf("%d",i);
  printf("\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -