加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

【数据结构】二叉查找树

发布时间:2021-05-22 19:33:20 所属栏目:安全 来源:网络整理
导读:副标题#e# 1、概念: 二叉查找树,也称排序二叉树,是指一棵空树或者具备下列性质的二叉树(每个节点都不能有多于两个儿子的树): 1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 2. 若任意节点的右子树不空,则右子树上所有节点

树的遍历有三种:先序、中序和后序。每次遍历子树时,也要相应的按序遍历该子树。

1. 先序遍历:[首先访问根节点]? 先访问根节点,再遍历左子树,最后遍历右子树
2. 中序遍历:[中间访问根节点]? 先遍历左子树,再访问根节点,最后遍历右子树
3. 后序遍历:[最后访问根节点]? 先遍历左子树,再遍历右子树,最后访问根节点

如下所示:

/*
*              6             先序遍历: 6 2 1 4 3 8 10
*             /                       
*            2   8           中序遍历: 1 2 3 4 6 8 10
*           /           
*          1   4   10        后序遍历: 1 3 4 2 10 8 6
*             /                           
*            3                           
*/
从上得知,中序遍历二叉查找树时正好是排序好的数据。

/*先序遍历*/
void printPreorder(BinaryTree *pBinaryTree)
{
	if (NULL != pBinaryTree)
	{
		printf("%dn",pBinaryTree->value);
		printPreorder(pBinaryTree->left_child);
		printPreorder(pBinaryTree->right_child);
	}
}

/*中序遍历*/
void printInorder(BinaryTree *pBinaryTree)
{
	if (NULL != pBinaryTree)
	{
		printInorder(pBinaryTree->left_child);
		printf("%dn",pBinaryTree->value);
		printInorder(pBinaryTree->right_child);
	}
}

/*后序遍历*/
void printPostorder(BinaryTree *pBinaryTree)
{
	if (NULL != pBinaryTree)
	{
		printPostorder(pBinaryTree->left_child);
		printPostorder(pBinaryTree->right_child);
		printf("%dn",pBinaryTree->value);
	}
}

参考资料:《数据结构与算法分析:C语言描述》(维斯)

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读