树
文章平均质量分 50
Uoyaij_
这个作者很懒,什么都没留下…
展开
-
在平衡二叉树中的每个结点中增设一个域lsize,存储以该结点为根的左子树中的结点个数加1.确定树中第k(k>=1)个结点的位置
二叉排序树中第k个结点,即为二叉排序树中序序列中顺序号为k的结点,根结点的Lsize域中存放的是根结点的顺序号。要确定二叉排序树中第k个结点,先需将k与根结点的顺序号进行比较,若相等,则找到;若k小于根结点的顺序号,k继续与根的左孩子结点的顺序号比较,依次类推。(注意,右孩子结点的顺序号等于根结点的顺序号与右孩子结点的Lsize域值之和。)下面给出一幅图加以理解:算法代码如下:结构体定义:typedef struct BTNode{ int data; int lsize; struc.原创 2020-08-26 17:56:53 · 1221 阅读 · 2 评论 -
判断给定的二叉树是否为二叉排序树(递归思想)
基本设计思想对二叉排序树来说,其中序遍历序列为递增有序序列,因此,对给定的二叉树进行中序遍历,如果能保证前一个值不比后一个值大,则说明该二叉树是一棵二叉排序树。算法如下int predt = -300; //predt小于树中的任何值,predt始终记录着当前所访问结点的前驱的值int judBST(BTNode *bt){ int b1, b2; if (bt == NULL) //空树是二叉排序树 { return 1; } else { b1 = jud.原创 2020-08-25 20:43:49 · 9302 阅读 · 0 评论 -
二叉排序树的构造与插入(初版)
定义:一棵空树,或者是具有下列性质的二叉树:若左子树不空,则左子树上所有结点的值均小于它的根结点的值;若右子树不空,则右子树上所有结点的值均大于它的根结点的值;左、右子树也分别为二叉排序树;没有键值相等的结点。结构体定义:typedef struct BTNode { int key; struct BTNode* lchild; struct BTNode* rchild;}BTNode;二叉排序树的插入算法:int BSTInsert(BTNode *&bt,原创 2020-08-25 16:04:33 · 1749 阅读 · 0 评论