`
flylynne
  • 浏览: 373551 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

判断一个二叉排序树是否是平衡二叉树

 
阅读更多

解决方案:
根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。
首先编写一个计算二叉树深度的函数,利用递归实现。

template<typename T>
static int Depth(BSTreeNode<T>* pbs)
{
	if (pbs==NULL)
		return 0;
	else
	{
		int ld = Depth(pbs->left);
		int rd = Depth(pbs->right);
		return 1 + (ld >rd ? ld : rd);
	}
}

下面是利用递归判断左右子树的深度是否相差1来判断是否是平衡二叉树的函数:

template<typename T>
static bool isBalance(BSTreeNode<T>* pbs)
{
	if (pbs==NULL) 
		return true;
	int dis = Depth(pbs->left) - Depth(pbs->right);
	if (dis>1 || dis<-1 )
		return false;
	else
		return isBalance(pbs->left) && isBalance(pbs->right);
}
分享到:
评论

相关推荐

    判断二叉树是不是二叉排序树

    现在大二,学数据结构,实验可写的程序,希望大家会喜欢

    二叉排序树与平衡二叉树的实现

     平衡二叉树是在构造二叉排序树的过程中,每当插入一个新结点时,首先检查是否因插入新结点而破坏了二叉排序树的平衡性,若是,则找出其中的最小不平衡子树,在保持二叉排序树特性的前提下,调整最小不平衡子树中各...

    写一算法,判断一棵二叉树是否是一棵二叉排序树。

    根据给定的文件信息,我们将深入探讨如何通过不同的方法来判断一棵二叉树是否为二叉排序树(Binary Search Tree, BST)。二叉排序树是一种特殊的二叉树,它满足以下条件: 1. 若左子树不为空,则左子树上所有节点的...

    Java实现二叉排序树

    二叉排序树(Binary Sort Tree,BST),也称为二叉搜索树,是一种特殊的二叉树数据结构,它的每个节点都包含一个键(key)、一个关联的值、一个指向左子节点的指针和一个指向右子节点的指针。在二叉排序树中,对于...

    二叉排序树问题

    **二叉排序树问题**是数据结构课程设计中常见的一个课题,旨在让学生深入理解并实践二叉树、查找表的逻辑结构和存储结构。在这个任务中,学生需要设计一个程序来实现二叉排序树的基本操作,同时提升自身的编程能力和...

    二叉排序树实现教师成果管理系统源码

    二叉排序树(Binary Sort Tree,BST),也称为二叉搜索树,是一种特殊的二叉树数据结构,它的每个节点都包含一个键值,且满足以下性质:对于任意节点,其左子树中所有节点的键值均小于该节点的键值;其右子树中所有...

    数据结构课设—二叉排序树的判别

    本课设的目标是编写一个程序,判断给定的二叉树是否满足这一特性,即是否为二叉排序树。为简化问题,我们限定树中节点的关键字各不相同,并采用二叉链表作为存储结构。设计中需提供正反两组测试用例,确保程序的正确...

    C语言实现二叉排序树生成算法

    本文通过具体的C语言代码示例详细介绍了如何实现二叉排序树的生成算法,并重点探讨了如何构建一个平衡的二叉排序树。通过右旋、左旋以及平衡处理等操作,我们可以有效地保持二叉排序树的平衡性,进而提高查找、插入...

    二叉排序树的创建和判断

    判断一个给定的二叉树是否为二叉排序树,可以通过递归的方式进行: 1. 如果树为空,那么它是二叉排序树。 2. 如果根节点为空,不是二叉排序树。 3. 对于根节点,检查其左子树的所有节点值是否都小于根节点值,且右子...

    数据结构平衡二叉排序树

    在本实验中,我们主要探讨的是数据结构中的一个关键概念——平衡二叉排序树(Balanced Binary Sort Tree),也称为AVL树。AVL树是一种自平衡的二叉搜索树,它的每个节点都包含一个平衡因子,这个因子是该节点的左...

    数据结构综合课设二叉排序树.docx

    二叉排序树,也称为二叉搜索树,是一种特殊类型的二叉树,它的每个节点都遵循以下规则: 1. 左子树中的所有节点的值都小于当前节点的值。 2. 右子树中的所有节点的值都大于当前节点的值。 3. 左右子树也必须是二叉...

    基于二叉排序树的二叉树建立

    基于二叉排序树的二叉树建立

    二叉排序树相关算法的实现.doc

    5. **判断是否为平衡二叉树**:平衡二叉树是左右子树高度差不超过1的二叉排序树,它能保证查找效率。判断一个二叉排序树是否平衡,可以通过递归计算左右子树的高度,并比较它们的差值,如果所有路径的最大深度和最小...

    数据结构课程设计\二叉平衡排序树

    在数据结构课程设计中,二叉平衡排序树通常是一个重要的实践课题,旨在让学生深入理解数据结构的原理并提升编程能力。 二叉平衡排序树的核心思想是平衡,它主要有以下几种类型: 1. AVL树:这是最早的平衡二叉搜索...

    平衡二叉树实现代码

    平衡二叉树是一种特殊的二叉查找树,它的左子树和右子树的高度差(绝对值)不超过1,并且左子树和右子树都是平衡的。这种特性确保了在最坏的情况下,树的操作时间复杂度仍然保持为O(logn),从而提高了搜索、插入和...

    数据结构各章实验 图的遍历 各种排序 二叉排序树

    最后,我们要了解二叉排序树(Binary Search Tree,BST),这是一种特殊的二叉树,每个节点的左子树只包含小于该节点的值,右子树包含大于该节点的值。这使得BST具有查找、插入和删除操作的高效性。二叉排序树的主要...

    常见的二叉树面试题大汇总(涵盖二叉搜索树)

    1. 判断是否为二叉搜索树:通过递归或迭代遍历所有节点,验证每个节点的值是否满足二叉搜索树的条件。 2. 二叉树的深度:通过递归计算从根节点到叶子节点的最大路径长度。 3. 平衡二叉树:如AVL树和红黑树,保证树...

    数据结构二叉排序树课程设计报告.doc

    - 创建二叉排序树通常从空树开始,用户输入一系列数值,每次输入一个新值就调用插入函数Insert(),直到输入-1表示结束。 - 插入操作涉及到比较新值与当前节点的值,如果新值较小则插入到左子树,否则插入到右子树...

Global site tag (gtag.js) - Google Analytics