二叉树
来源:互联网 发布:方志敏杀害传教士 知乎 编辑:程序博客网 时间:2024/05/16 05:08
二叉树的链式存储
LinkBitTree.h
#include "stdio.h"#include "stdlib.h"#define MAXSIZE 100;//数据类型typedef int DataType;//二叉树结点类型typedef struct Node{ DataType data; struct Node *lchild; struct Node *rchild;}*BitTree,BitNode;//二叉树初始化//根结点指针置空//*BitTree是Node类型的指针,BitTree是指针变量,是变量//BitTree *T 是指向 (指针变量BitTree)的指针//BitTree存储的是二叉树结点的内存地址,变量T存储的是BitTree的内存地址//总之BitTree是内存地址,传递参数是要注意void InitBitTree(BitTree *T){ *T=NULL;}//递归销毁二叉树void DestroyBitTree(BitTree *T){ if(*T){ if((*T)->lchild) DestroyBitTree(&((*T)->lchild)); if((*T)->rchild) DestroyBitTree(&((*T)->rchild)); } free(*T); *T=NULL;}//递归创建二叉树,#代表空void CreatBitTree(BitTree *T){ DataType ch; scanf("%c",&ch);/* %是格式化输出符号,后面接输出格式;d 表示十进制;o 表示八进制;ox 表示十六进制; c 表示输出字符 */ if(ch=='#') *T=NULL; else { *T = (BitTree)malloc(sizeof(BitNode)); if(!(*T)) exit(-1); (*T)->data=ch; CreateBitTree(&((*T)->lchild)); CreateBitTree(&((*T)->rchild)); }}//二叉树左插入操作。指针p指向二叉树T某个结点,将子树c插入到T中,使c成为p指向结点的左子树,p指向结点的原来的左子树成为c的右子树int InsertLeftChild(BitTree p,BitTree c){ if(p) { c->rchild = p->lchild; p->lchild = c; return 1; } return 0;}//二叉树右插入操作。指针p指向二叉树T某个结点,将子树c插入到T中,使c成为p指向结点的右子树,p指向结点的原来的左子树成为c的右子树int InsertRightChild(BitTree p,BitTree c){ if(p) { c->rchild = p->rchild; p->rchild = c; return 1; } return 0;}//返回二叉树结点值为e的指针操作BitTree Point(BitTree T,DataType e){ BitTree Q[MaxSIZE]; int front = 0 , rear = 0; BitNode *p; if(T) { Q[rear] = T; rear++; while(front!=rear) { p=Q[front]; front++; if(p->data==e) return p; if(p->lchild) { Q[rear]=p->lchild; rear++; } if(p->rchild) { Q[rear]=p->rchild; rear++; } } } return NULL;}
0 0
- 二叉树、二叉堆
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 二叉树
- 第四周项目3——单链表应用(3)
- 第四周 项目六—— 循环双链表(1)
- 第四周 项目四【单链表算法库】
- TCP/IP四层模型和OSI七层模型
- android 目录结构,adb环境变量配置
- 二叉树
- 第四周项目2-建设“单链表”算法库
- display:table-cell的 应用
- 第四周项目三并联电路总电阻
- 第四周项目-用星号表示姓名读音的首字母
- BusyBox制作根文件系统(rootfs)
- 大家好,我是新人,请多关照
- 顺序表算法库
- 第四周项目3(1)-单链表应用 逆置单链表