博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树
阅读量:6262 次
发布时间:2019-06-22

本文共 1516 字,大约阅读时间需要 5 分钟。

hot3.png

C语言实现的二叉树算法:

#include <stdio.h>

#include <stdlib.h>
#include <malloc.h>

typedef struct bitnode

{
char data;
struct bitnode *lchild, *rchild;
}bitnode, *bitree;

void createbitree(t,n)

bitnode ** t;
int *n;
{
char x;
bitnode *q;

*n=*n+1;

printf("\n       Input  %d  DATA:",*n);
x=getchar();
if(x!='\n') getchar();

if (x=='\n')

return;

q=(bitnode*)malloc(sizeof(bitnode));

q->data=x;
q->lchild=NULL;
q->rchild=NULL;
*t=q;

printf("      This Address is:   %o,    Data is:  %c,\n      Left Pointer is:   %o,       Right Pointer is:  %o",q,q->data,q->lchild,q->rchild);

createbitree(&q->lchild,n);

createbitree(&q->rchild,n);
return;
}

void visit(e)

bitnode *e;
{
printf("  Address:  %o,  Data:  %c,  Left Pointer:  %o,  Right Pointer:  %o\n",e,e->data,e->lchild,e->rchild);
}

void preordertraverse(t)

bitnode *t;
{
if(t)
{
visit(t);
preordertraverse(t->lchild);
preordertraverse(t->rchild);
return ;
}else return ;
}

void countleaf(t,c)

bitnode *t;
int *c;
{
 if(t!=NULL)
  {
   if (t->lchild==NULL && t->rchild==NULL)
   {*c=*c+1;
   }
   countleaf(t->lchild,c);
   countleaf(t->rchild,c);
  }
 return;
}

int treehigh(t)

bitnode *t;
{int lh,rh,h;
 if(t==NULL)
 h=0;
 else{
 lh=treehigh(t->lchild);
 rh=treehigh(t->rchild);
 h=(lh>rh ? lh:rh)+1;
      }
 return h;
}
main()
{
bitnode *t; int count=0;
int n=0;

printf("\n                  Please input TREE Data:\n");

createbitree(&t,&n);

printf("\n                  This is TREE Struct: \n");

preordertraverse(t);

countleaf(t,&count);

printf("\n       This TREE has %d leaves    ",count);

printf("    ,       High of The TREE is: %d\n",treehigh(t));

}

转载于:https://my.oschina.net/u/181847/blog/42751

你可能感兴趣的文章
这是一份优美的信息图,吴恩达点赞的deeplearning.ai课程总结
查看>>
去中心化并不是比特币的关键和核心,真的有用才是
查看>>
0629 - 基本完成 iPaste 的 Pin 管理
查看>>
经典:头像与昵称描述的位置组合
查看>>
【CSS模块化之路2】webpack中的Local Scope
查看>>
浙江移动容器云基于 Dragonfly 的统一文件分发平台生产实践
查看>>
「每日一瞥
查看>>
java 线程池
查看>>
排序算法总结
查看>>
python模块学习(二)
查看>>
近期的爬虫工作杂谈
查看>>
机器学习之 k 近邻
查看>>
canvas核心技术-如何绘制图形
查看>>
netty源码分析之pipeline(二)
查看>>
面试:讲讲 Android 的事件分发机制
查看>>
计算机程序的思维逻辑 (95) - Java 8的日期和时间API
查看>>
计算机程序的思维逻辑 (8) - char的真正含义
查看>>
2019 年技术大趋势预测
查看>>
推荐一款基于vue的滚动条插件vuescroll
查看>>
安全圈有多大?也许就这么大!
查看>>