你们好,伙计们,我正在试图理解我如何看到二叉树是否平衡。我试图打印出cout语句,以便进一步理解它,但运气不好。
算法的想法是,如果它返回-1,它就不平衡,如果它返回其他任何东西,它是平衡的。
然而,我并没有真正理解这个算法是如何工作的。但是我想知道的一些事情是;
int checkBalance(node *root)
{
if (root == NULL) return 0;
int left = checkBalance(root->left);
int right = checkBalance(root->right);
//cout << "Root: " << root->key << " Left: " << left << ", Right: " << right << endl;
if (left == -1 || right == -1) return -1;
if (abs(left-right) > 1) return -1;
if (left > right) return left+1;
return right+1;
}
我的困惑点在于以下代码行:
如果(左
int 左 = 检查平衡(根-
感谢您抽出时间阅读,我已经尝试自己研究这个问题,但是我很难理解这段代码是如何工作的。
完整代码:html" target="_blank">http://pastebin.com/raw/VaiUNVdJ(案例6检查,案例1添加节点)
这是基本的BBT检查。它检查子树是否平衡。如果不是,则返回-1;如果是,它返回深度。
在伪代码中:
要解决您的具体问题:
这足以让你摆脱困境了吗?
让我们采用您给出的节点值,使用根部为 49、子级为 48 和 51 的树结构,中缀表示法可能如下所示:
(48, 49, (50, 51, 52))
以更严格的形式,
49->left = 48
49->right = 51
51->left = 50
51->right = 52
There are no other children
在开始时根 = 节点 49,我们得到
int left = checkBalance(root->left); // returns depth of 1
int right = checkBalance(root->right); // returns depth of 2
现在,向左
我有一个<code>BinarySearchTree</code>,里面有Instance bankaccount的对象,这是我创建的一个类,所以基本上它只是一个二进制搜索树,我编写了一个方法,它将获取树并对其进行平衡,因为某些原因,它在平衡之前准确地打印出树: 现在,首先我有方法,它接受一个列表和一个并通过按顺序检查树数据来创建树数据的,因此它是一个排序数组。然后使用另一种方法以平衡的方式创建树
我工作的问题,以检查如果二进制结构树是平衡或不,当我运行代码,我得到EXC_BAD_ACCESS,我不确定如何修复问题,是什么导致它打破。 假设代码在某个时刻命中 NULL 并返回 (true,-1),并深入到左侧子树。然后返回并转到右侧子树。我们可以检查左和右的子树是否由不同的平衡,如果它是 谢谢
我实现了下面的C代码,以检查二叉树是否平衡,即左右子树的高度相差最多1。但是,我不确定它是否有效,或者以错误的方式重复检查子树。有人能引导我吗?
主要内容:二叉排序树转化为平衡二叉树,构建平衡二叉树的代码实现,总结上一节介绍如何使用二叉排序树实现动态 查找表,本节介绍另外一种实现方式—— 平衡二叉树。 平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 其实就是在二叉树的基础上,若树中每棵子树都满足其左子树和右子树的深度差都不超过 1,则这棵二叉树就是平衡二叉树。 图 1 平衡与不平衡的二叉树及结点的
NowCoder 题目描述 平衡二叉树左右子树高度差不超过 1。 解题思路 // java private boolean isBalanced = true; public boolean IsBalanced_Solution(TreeNode root) { height(root); return isBalanced; } private int height(Tre
排序二叉树中存在一个问题就是可能会退化成一个链表,当只有左子树或者右子树有节点的时候,此时排序二叉树就像链表一样,但因为排序二叉树在插入查询的时候还要判断左右子树的问题,这样查询的效率反而变低,从而引出了平衡二叉树 平衡二叉树又称平衡搜索树(Self-balance Binary Search Tree)又称AVL树,同时保证了查询和添加的效率。首先平衡二叉树是一颗排序二叉树,且它是空树或者他的每