数据结构——二叉排序树(有序二叉树)

        二叉树排序树,又称二叉搜索树、二叉查找树,顾名思义,从此树的一个结点开始依次取出后面结点的数据,取出的数据列是有序的。那么问题来了,二叉树不像线性表那样可以很直观的进行逻辑排序算法考量。二叉树作为非线性结构,必须靠一种特定的规则来对二叉树进行排序。这里我们一般用中序遍历进行有序排列。啥意思呢,就是一个二叉树按中序遍历依次取出的数据是从小到大的,就认为它是二叉排序树。也就是说,从根节点开始的每个子树,左孩子<根<右孩子,也就是说,它本身就是一种二分查找算法,好了不多赘述。下面开始实战。

本文对二叉排序树进行的操作主要通过二叉树的链式存储进行,先定义结构:

//设计结点
typedef struct TreeNode
{
	int data;
	struct TreeNode *left;
	struct TreeNode *right;
}TreeNode;

先序和后序的操作可以参考之前的二叉树链式存储那一篇中有提到,这里只写中序。

创建结点

//创建结点
TreeNode *create_node(int data)
{
	TreeNode *node=malloc(sizeof(TreeNode));
	node->data=data;
	node->left=NULL;
	node->right=NULL;
	return node;
}

中序

//中序
void midorder(TreeNode *root)
{
	if(NULL==root) return;
	midorder(root->left);
	printf(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值