C语言 二叉树

作者&投稿:栾放 (若有异议请与网页底部的电邮联系)
c语言二叉树什么意思?学习要有什么基础?~

二叉树是一种数据结构
数据结构是一种对数据存储结构和操作的封装
你如果要学数据结构的话,要适当了解一门语言,因为数据结构一般是用一种语言来描述的,另外这是对数据的一种抽象,最好了解一下数据的真实储存结构

如果只是定义的话,下面的code就可以了,欢迎交流struct Node{ int value;//二叉树的值 Node* left; //指向左子树 Node* right;//指向右子树};

#include<stdio.h>

#include<stdlib.h>


typedef struct Node

{

int e;

struct Node *l, *r;

} Node;


Node *init()                    //先序遍历构造二叉树

{

char n;

Node *p;

scanf("%c", &n);

if (n=='0')

return NULL;

p = (Node*)malloc(sizeof(Node));

if (!p)

exit(0);

p->e = n-'0';

p->l = init();

p->r = init();

return p;

}


void DLR(Node *head)           //先序遍历二叉树(递归算法)

{

if (head)

{

printf("%d", head->e);

DLR(head->l);

DLR(head->r);

}

}

void destory(Node *head)      //销毁二叉树

{

Node *l, *r;

if (!head)

return;

l = head->l;

r = head->r;

free(head);

destory(l);

destory(r);

}

int main()

{

Node *head = init();

DLR(head);

destory(head);

return 0;

}




新洲区15532585432: 请问C语言如何创建二叉树???? -
甫怜东药: 创建二叉树的源程序如下: #include <cstdlib>#include <stdio.h>typedef struct node{ //树的结点int data;struct node* left;struct node* right;} Node;typedef struct{ //树根Node* root;} Tree;void insert(Tree* tree, int value)//创建树{Node* ...

新洲区15532585432: 二叉树(C语言)怎么创建? -
甫怜东药: C语言中二叉树的创建需要用到结构体来定义一个树的数据类型.树这个数据结构有一些数据域,和多个指针域.当然,对于二叉树而言,一般可以定义两个指针域,分别指向root节点的左右子节点.数据结构定义:struct tree{ int data; //这里数据域以此为例 tree*right,*left;}; 真正构建二叉树可以使用动态内存申请,这是一种比较常见的方法(如果不会动态内存申请,可以先看看),但是这样做在子树很多时会耗费较多时间.因此可以事先开辟好一段内存空间用于存储树.比如 tree T[2000];如果需要建立新的子树,那么只需将数组中某个左右子节点赋值即可.如有疑问,欢迎继续追问.

新洲区15532585432: 计算机c语言中什么是“二叉树”? -
甫怜东药: 在计算机科学中,二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用作二叉查找树和二叉堆或是二叉排序树. 二叉树的每个结点至多只有二棵子树(不存在度大...

新洲区15532585432: c语言数据结构:怎么建立一个二叉树? -
甫怜东药: 只要将一个二叉树用“括号表示法”表示出来,然后,用链式存储结构将其各个结点存储就可以了,也就是输入一个二叉树.最后,用中序遍历输出! typedef struct node{ ElemType data;struct node *lchild,*rchild;} BTNode; //创建一个二叉树...

新洲区15532585432: C语言建立二叉树 -
甫怜东药: 根据二叉树的父节点和子节点的关系来创建 比如,父节点的编号是1,那么左子节点的编号就是2,右子节点的编号就是3 关系父节点编号为i,则左子节点编号为2*i,右子节点编号为2*i+1 然后按照从小到大的顺序赋值就行了 比如操作 先i=1;...

新洲区15532585432: 求数据结构(C语言版)建立二叉树的代码~~急~~谢谢了 -
甫怜东药: BT.H文件 #include <stdio.h> #include <malloc.h> #include <conio.h> #define TRUE 1 #define FALSE 0 #define ERROR 0 #define OK 1 #define Stack_Size 50 #define NUM 50 #define MAXSIZE 50 //队列的最大长度 //定义二叉树 typedef char ...

新洲区15532585432: 请问用C语言怎么样编写二叉树交换左右子树? -
甫怜东药: void exchange(Btree &rt){//二叉树每个节点互换左右子树 Btree *t=NULL; if(rt->lchild==NULL&&rt->rchild==NULL) return;//若树没左右子树,返回 else {temp=rt->lchild; rt->lchild=rt->rchild; rt->rchild=temp;} if(rt->lchild) exchange(rt->lchild);//递归交换左子树的子树 if(rt->rchild) exchange(rt->rchild;//递归交换右子树的子树 } 你是学数据结构的?

新洲区15532585432: 用c语言编程实现二叉树的建立和遍历二叉树? -
甫怜东药: //这是我上数据结构写的 建议理解为主#include#include#define ERROR 0#define OK 1#define OVERFLOW -2#define FLASE 0#define TURE 1 typedef int Status; typedef char TElemType; typedef struct BiTNode{ TElemType data; struct BiTNode ...

新洲区15532585432: 如何用C语言定义一个二叉树 -
甫怜东药: typedef struct Node { int data;//结点的内容 struct Node* leftchird; struct Node* rightchird; }NODE; typedef struct tree { NODE* root;//树的根 int num;//树结点个数 }TREE;//二叉树

新洲区15532585432: 用C语言实现二叉树的操作 -
甫怜东药: #include#define STACK_MAX_SIZE 30 #define QUEUE_MAX_SIZE 30 #ifndef elemType typedef char elemType; #endif /************************************************************************/ /* 以下是关于二叉树操作的11个简单算法...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网