【练习】二叉树的实现
来源:互联网 发布:阿里云投资了多少钱 编辑:程序博客网 时间:2024/05/21 10:25
- 定义二叉链式结构
#include <stdio.h> #include <stdlib.h> #define QUEUE_MAXSIZE 50typedef char DATA; //定义元素类型 typedef struct ChainTree //定义二叉树结点类型 { DATA data; //元素数据 struct ChainTree *left; //左子树结点指针 struct ChainTree *right; //右子树结点指针}ChainBinTree;
- 初始化二叉树
ChainBinTree *BinTreeInit(ChainBinTree *node) //初始化二叉树根结点 { if(node!=NULL) //若二叉树根结点不为空 return node; else return NULL;}
- 添加结点到二叉树
int BinTreeAddNode(ChainBinTree *bt,ChainBinTree *node,int n) //添加数据到二叉树 //bt为父结点,node为子结点,n=1表示添加左子树,n=2表示添加右子树 { if(bt==NULL) { printf("父结点不存在,请先设置父结点!\n"); return 0; } switch(n) { case 1: //添加到左结点 if(bt->left) //左子树不为空 { printf("左子树结点不为空!\n"); return 0; }else bt->left=node; break; case 2://添加到右结点 if( bt->right) //右子树不为空 { printf("右子树结点不为空!\n"); return 0; }else bt->right=node; break; default: printf("参数错误!\n"); return 0; } return 1;}
- 获取二叉树左右子树
ChainBinTree *BinTreeLeft(ChainBinTree *bt) //返回左子结点 { if(bt) return bt->left; else return NULL;}ChainBinTree *BinTreeRight(ChainBinTree *bt) //返回右子结点 { if(bt) return bt->right; else return NULL;}
- 获取二叉树状态
int BinTreeIsEmpty(ChainBinTree *bt) //检查二叉树是否为空,为空则返回1,否则返回0 { if(bt) return 0; else return 1;} int BinTreeDepth(ChainBinTree *bt) //求二叉树深度{ int dep1,dep2; if(bt==NULL) return 0; //对于空树,深度为0 else { dep1 = BinTreeDepth(bt->left); //左子树深度 (递归调用) dep2 = BinTreeDepth(bt->right); //右子树深度 (递归调用) if(dep1>dep2) return dep1 + 1; else return dep2 + 1; } }
- 在二叉树中查找
ChainBinTree *BinTreeFind(ChainBinTree *bt,DATA data) //在二叉树中查找值为data的结点 { ChainBinTree *p; if(bt==NULL) return NULL; else { if(bt->data==data) return bt; else{ // 分别向左右子树递归查找 if(p=BinTreeFind(bt->left,data)) return p; else if(p=BinTreeFind(bt->right, data)) return p; else return NULL; } } }
- 清空二叉树
void BinTreeClear(ChainBinTree *bt) // 清空二叉树,使之变为一棵空树{ if(bt) { BinTreeClear(bt->left); //清空左子树 BinTreeClear(bt->right);//清空右子树 free(bt);//释放当前结点所占内存 bt=NULL; } return; }
阅读全文
0 0
- 【练习】二叉树的实现
- 【数据结构练习】二叉树的实现
- 【编程练习】二叉树的反转,Java和Python实现
- 【练习】二叉树的遍历
- [每日练习]C编程实现二叉树
- 二叉树【数组实现】基础练习
- 二叉树【链表实现】基础练习
- PHP二叉树的一些操作练习
- 递归二叉树的序列打印练习
- 二叉树的序列化练习
- 编程练习-二叉树(求二叉树的高度)
- C++编程练习(17)----“二叉树非递归遍历的实现“
- C++编程练习(17)----“二叉树非递归遍历的实现“
- 【练习】树的实现
- 算法练习之二叉查找树 C++实现
- Python 二叉树练习
- 练习--链式二叉树
- 二叉树代码练习
- 就算萌新也能看得懂的gulp教程(1):①读文件②修改③写到新文件
- python _foo __foo
- CCPC2017秦皇岛赛区游记
- CentOS7 安装配置rsync-3.0.9
- SSM综合项目实战(TTSC) -- day13 订单、定时器Quartz
- 【练习】二叉树的实现
- setlocale函数和wchar_t笔记
- 听说可以赚积分?
- java基础4
- PAT (Basic Level) Practise (中文)1005. 继续(3n+1)猜想 (25)
- 《看不见的森林:林中自然笔记》书摘二
- Design Pattern 2: Proxy
- 状态模式
- POJ-2063 Investment (完全背包 简单题)