二叉树的链式存储结构-二叉链表
来源:互联网 发布:php成绩管理系统源码 编辑:程序博客网 时间:2024/05/18 13:44
二叉树的链式存储结构-二叉链表
在此只附上头文件:
代码已经在资源中共享:
地址为:http://download.csdn.net/detail/ta893115871/4751186
头文件为:
/* * tree.h * * Created on: 2012-10-31 * Author: china * QQ:893115871 * * 二叉树使用链表能避免顺序储存浪费空间的问题,算法和结构相对简单,但使用二叉链表, * 由于缺乏父链的指引,在找回父节点时需要重新扫描树得知父节点的节点地址。 */#ifndef TREE_H_#define TREE_H_#include <stdio.h>#include <stdlib.h>//for malloc()#include <math.h>//for OVERFLOW其值为3#define OK 1#define ERROR 0#define Nil '#'//表示空结点#define ROOT -1#define SIBLING 2typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 *//* 二叉树的二叉链表存储表示 */typedef char DataType;typedef struct TNode {DataType data; //结点所存储的数据struct TNode* lchild, *rchild;/* 左右孩子指針 */} BiTNode, *BiTree;//------------队列的定义和基本操作的声明,用于层次遍历二叉树--------------------------------typedef BiTree QElemType;//队列元素为指针typedef struct SNode {QElemType data;struct SNode* next;} QNode, *LinkList;typedef struct {LinkList front; //队首结点(即删除点)LinkList rear; //队尾结点(即插入点)} LinkQueue;int creat_empty_linkqueue(LinkQueue*);int linkqueue_empty(const LinkQueue*);int linkqueue_length(const LinkQueue*);int linkqueue_get_top_element(const LinkQueue*, QElemType*);int linkqueue_enter(LinkQueue*, QElemType);int linkqueue_delete(LinkQueue*, QElemType*);void linkqueue_clear(LinkQueue *);void DestroyQueue(LinkQueue*);//---------------end queue-----------------------------BiTree create_bitree(); //创建一个二叉树Status empty_bitree(const BiTree); //判空//visitvoid visit_func_bitree(DataType);//输出结点元素void pre_order_bitree(const BiTree,void(*visit)(DataType)); //先序遍历二叉树void in_order_bitree(const BiTree,void(*visit)(DataType)); //中序遍历二叉树void post_order_bitree(const BiTree,void(*visit)(DataType)); //后序遍历二叉树void level_order_bitree(const BiTree,void(*visit)(DataType)); //层次遍历二叉树void level_order_bitree_queue(const BiTree,void(*visit)(DataType)); //层次遍历二叉树void pre_orderlists_bitree(const BiTree,void(*visit)(DataType));//广义表输出二叉树//end visitStatus destroy_bitree(BiTree); //销毁二叉树#define clear_bitree destroy_bitree//在二叉树中清空和销毁是一样的int depth_bitree(const BiTree); //求二叉树的深度int depth_bitree2(const BiTree); //求二叉树的深度Status get_rootdata(const BiTree, DataType*); //获取根结点的数据Status get_parent_bitree(const BiTree, DataType*, DataType); //获取双亲结点Status get_leftchild_bitree(const BiTree, DataType*, DataType); //获取结点的左孩子Status get_rightchild_bitree(const BiTree, DataType*, DataType); //获取某个结点的右孩子Status get_leftsibling_bitree(const BiTree, DataType*, DataType); //获取结点的左兄弟Status get_rightsibling_bitree(const BiTree, DataType*, DataType); //获取结点的右兄弟Status assign_bitree(BiTree, DataType, DataType); //更改某节点的值int get_nums_bitree(const BiTree); //返回二叉树的结点数int get_leafnums_bitree(const BiTree); //返回二叉树的叶子数Status get_node_bitree(const BiTree, DataType*, int); //按先序获取第index个节点Status search_node_bitree(const BiTree, DataType); //查看树中是否含有某个结点void exchange_bitree(BiTree); //交换左右子树void delete_bitree(BiTree, DataType, int); //删除子树void insert_bitree(BiTree, DataType, int, const BiTree); //插入子树#endif /* TREE_H_ */
- 二叉树的链式存储结构-二叉链表
- 二叉树的链式存储结构----二叉链表
- [数据结构][二叉链表]二叉树链式存储结构的二叉链表实现
- 二叉树的链式存储结构
- 二叉树的链式存储结构
- 二叉树的链式存储结构
- 大话数据结构十三:二叉树的链式存储结构(二叉链表)
- 二叉树的链式存储结构----(循环)双向线索链表
- 二叉树的链式结构。
- 二叉树的链式结构
- 二叉树的链式结构
- 二叉树的链式结构
- 二叉树的链式存储
- 二叉树的链式存储
- 二叉树的链式存储
- 二叉树的链式存储
- 二叉树的链式存储
- 二叉树的链式存储
- clrprofiler
- EFM32片内外设--ADC之多通道采样+Timer+PRS触发+DMA
- FXO端口的断开呼叫的问题(转)
- visual studio中使用环境变量
- ubuntu终端改成显示相对路径
- 二叉树的链式存储结构-二叉链表
- Android安卓的TextView内容超长的时候,垂直滚动
- 颜色渐变
- Web APP 开发框架大探秘
- Oracle Workflow Tables
- android 如何隐藏4.0以上系统下面的3按个虚拟按键?
- centOS修改机器名 hosts
- 移动开发网
- Configuring SIP Call-Transfer Features