没有合适的资源?快使用搜索试试~ 我知道了~
二叉排序树的操作算法实现
5星 · 超过95%的资源 需积分: 9 104 下载量 62 浏览量
2009-06-25
09:56:30
上传
评论 1
收藏 11KB TXT 举报
温馨提示
试读
13页
二叉排序树的操作算法实现,包括创建、插入、删除、先序遍历、中序遍历以及后序遍力。
资源推荐
资源详情
资源评论
二叉排序树的基本操作
编写二叉排序树的基本操作操作,包括:
1.建立二叉树(即插入结点),并动态显示二叉树的建立过程。
2.删除结点,并动态显示二叉树的删除过程。
3.统计结点信息,即统计:
树结点总数、二度结点数、一度结点数 和 叶子结点数。
4.先序遍历(递归方法)。
5.中序遍历(递归方法)。
6.后序遍历(递归方法)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "windows.h"
typedef struct tree{//定义树的结构
int data;//假定树的元素类型为整型
struct tree *lchild;//树的左子树
struct tree *rchild;//树的右子树
}TREE;
typedef struct stack{//定义链栈结构
TREE *t;//栈结点元素为指向二叉树结点的指针
int flag;//后序遍历时用到该标志
struct stack *next;//栈结点链接指针
}STACK;
void gotoxy(int x,int y)
{
编写二叉排序树的基本操作操作,包括:
1.建立二叉树(即插入结点),并动态显示二叉树的建立过程。
2.删除结点,并动态显示二叉树的删除过程。
3.统计结点信息,即统计:
树结点总数、二度结点数、一度结点数 和 叶子结点数。
4.先序遍历(递归方法)。
5.中序遍历(递归方法)。
6.后序遍历(递归方法)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "windows.h"
typedef struct tree{//定义树的结构
int data;//假定树的元素类型为整型
struct tree *lchild;//树的左子树
struct tree *rchild;//树的右子树
}TREE;
typedef struct stack{//定义链栈结构
TREE *t;//栈结点元素为指向二叉树结点的指针
int flag;//后序遍历时用到该标志
struct stack *next;//栈结点链接指针
}STACK;
void gotoxy(int x,int y)
{
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
HANDLE hConsoleOut;
hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);
csbiInfo.dwCursorPosition.X = x;
csbiInfo.dwCursorPosition.Y = y;
SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);
}
void push(STACK **top,TREE *tree)
//功能:树结点入栈
//参数:
// **top-指向栈顶元素的二级指针
// *tree-指向树根结点的指针
//无返回值
{
STACK *p;//工作指针
p=(STACK *)malloc(sizeof(STACK));//申请栈结点
p->t=tree;//根结点进栈
p->next=*top;//新栈结点指向栈顶
*top=p;//栈顶为新结点
}
void pop(STACK **top,TREE **tree)
//功能:树结点出栈
//参数:
// **top-指向栈顶元素的二级指针
// **tree-指向树根结点的二级指针
//无返回值
{
STACK *p;//工作指针
if(*top==NULL)//空栈
HANDLE hConsoleOut;
hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);
csbiInfo.dwCursorPosition.X = x;
csbiInfo.dwCursorPosition.Y = y;
SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);
}
void push(STACK **top,TREE *tree)
//功能:树结点入栈
//参数:
// **top-指向栈顶元素的二级指针
// *tree-指向树根结点的指针
//无返回值
{
STACK *p;//工作指针
p=(STACK *)malloc(sizeof(STACK));//申请栈结点
p->t=tree;//根结点进栈
p->next=*top;//新栈结点指向栈顶
*top=p;//栈顶为新结点
}
void pop(STACK **top,TREE **tree)
//功能:树结点出栈
//参数:
// **top-指向栈顶元素的二级指针
// **tree-指向树根结点的二级指针
//无返回值
{
STACK *p;//工作指针
if(*top==NULL)//空栈
剩余12页未读,继续阅读
资源评论
- YIXI_Bigrabbit2011-12-09代码不错,不足就是删除算法不好,如果被删除的节点有子树会将子树一并删除,而且无法通过增加节点复原。
- Yeuler2012-06-24很好用,但仍旧有点小瑕疵
- xunzhaozhe2012-06-30整体很好,但会忽略了一点,就是输入的数较多,形成的树就会很大,然后显示的时候就会长生混乱。
- gdutshougongyi2012-06-29嗯,还好,就是树输出,看着有点怪。
- Cathy06252012-12-05树的输出感觉有点奇怪~~~应该再整合一下~~~
JietHao
- 粉丝: 2
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功