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;
}
甫怜东药: 创建二叉树的源程序如下: #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个简单算法...