console.log(🍺);|

Little_Monster-lhq

园龄:5年9个月粉丝:26关注:18

2022-12-05 10:35阅读: 123评论: 0推荐: 0

二叉树基本操作代码实现

#include <stdio.h>
#include <stdlib.h> //exit
#include<malloc.h>
//定义二叉链表结点结构
typedef struct node{
int data;
struct node *lchild, *rchild;
}BiTree;
//创建二叉链表
BiTree *CreateBiTree( )
{
BiTree *T;
int x;
scanf("%d",&x);
if(x==0) T=NULL;
else
{
if(!(T=(BiTree*)malloc(sizeof(BiTree))))
exit(-1);
T->data = x;
T->lchild =CreateBiTree();
T->rchild =CreateBiTree();
}
return T;
}
//先序遍历二叉树
void Preorder(BiTree *T )
{
if(T)
{
printf("%d",T->data);
Preorder( T->lchild );
Preorder( T->rchild );
}
}
//中序遍历二叉树
void Inorder(BiTree *T )
{
if(T)
{
Inorder( T->lchild );
printf("%d",T->data);
Inorder( T->rchild );
}
}
//后序遍历二叉树
void Postorder(BiTree *T )
{
if(T)
{
Postorder( T->lchild );
Postorder( T->rchild );
printf("%d",T->data);
}
}
//计算二叉树的深度
int Depth(BiTree *T)
{ int depl,depr;
if(T)
{
depl=Depth(T->lchild);
depr=Depth(T->rchild);
if (depl>=depr) return (depl+1);
else return (depr+1);
}
else return 0;
}
//求二叉树结点的个数
int Total(BiTree *T)
{
int left,right;
if (T==NULL) return 0;
left= Total(T->lchild);
right= Total(T->rchild);
return 1+left+right;
}
//求结点的双亲结点
int Parent(BiTree *T,int x)
{ //若返回值为0,则结点不在树中
//若返回值为1,则找到双亲结点
if(T)
{
if(T->data ==x)
{
printf("该结点为树跟,不存在双亲");
return 0;
}
else if(T->lchild&&T->lchild->data==x||T->rchild&&T->rchild->data==x)
{
printf("该结点为的双亲%d",T->data);
return 1;
}
else
{
if(Parent(T->lchild, x))
return 1;
else
return Parent(T->rchild, x);
}
}
else return 0;
}
//判定结点所在的层次
int Level(BiTree *T,int x,int n)
{//若返回值为0,则结点不在树中,否则返回结点的层次
int lev;
if(T)
{
if(T->data==x) return n;
lev=Level(T->lchild,x,n+1);
if(lev)
return lev;
else
return Level(T->rchild,x,n+1);
}
else return 0;
}
void freeTree(BiTree *T)
{
BiTree *ltree,*rtree;
if(T)
{
ltree=T->lchild;
rtree=T->rchild;
free(T);
freeTree(ltree);
freeTree(rtree);
}
}
void main()
{
int sel;
BiTree *T;
int x;
do{
printf("┌─────────────────┐\n");
printf("︳ 二叉树的基本操作(二叉链表实现) ︳\n");
printf("︳ ︳\n");
printf("︳ 1 创建 2、先序遍历 ︳\n");
printf("︳ 3、中序遍历 4、后序遍历 ︳\n");
printf("︳ 5、深度 6、结点个数 ︳\n");
printf("︳ 7、求双亲 8、结点层次 ︳\n");
printf("︳ 9、退出 ︳\n");
printf("└─────────────────┘\n");
printf("请选择:");
scanf("%d",&sel);
switch(sel)
{
case 1:
printf("\n请输入二叉树中的结点:\n");
T=CreateBiTree();
break;
case 2:
printf("\n先序遍历序列:\n");
Preorder(T );
break;
case 3:
printf("\n中序遍历序列:\n");
Inorder(T );
break;
case 4:
printf("\n后序遍历序列:\n");
Postorder(T );
break;
case 5:
printf("\n二叉树的深度为:%d\n",Depth(T));
break;
case 6:
printf("\n二叉树中结点总数为:%d\n",Total(T));
break;
case 7:
printf("\n请输入一个结点:\n");
scanf("%d",&x);
if(!Parent(T,x)) printf("\n未找到双亲");
break;
case 8:
printf("\n请输入一个结点:\n");
scanf("%d",&x);
printf("\n该结点层次为:%d\n",Level(T,x,1));
break;
case 9:
freeTree(T);
return;
}
printf("\n按任意键继续....\n");
getch();
system("cls");
}while(1);
//释放链表
}
//测试数据:
//1 2 3 0 0 4 5 0 6 0 0 7 0 0 0

本文作者:Little_Monster-lhq

本文链接:https://www.cnblogs.com/little-monster-lhq/p/16951677.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Little_Monster-lhq  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 IVORY TOWER - 虞万殊
  2. 2 I Really Like You - Carly Rae Jepsen
  3. 3 404 not found REOL
  4. 4 不暧昧 - 徐秉龙,黄星侨
404 not found - REOL
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.