【数据结构】二叉查找树
发布时间:2021-05-23 03:33:49 所属栏目:安全 来源:网络整理
导读: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语言描述》(维斯) (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |