我需要一些澄清,这可能是一个非常愚蠢的问题,我已经做了一些研究,但是找不到明确的答案。我的问题是,平衡二叉树和非平衡二叉树之间有哪些属性差异? 在面试(Java问题)中问到了我这个问题,我已向面试官解释了它们之间的区别,但他提到他想知道区分两者(二叉树 - 非平衡 vs 平衡)之间的属性。 如果有人能为我澄清这一点,我将不胜感激。
我认为安德烈亚斯的回答很到位,但你需要了解二叉树和链表的内部工作原理才能欣赏它。似乎这就是面试官在考查你的内容:当他提到这个结构时,你知道他在说什么,并且能够轻松地遍历它以得出合理的答案吗?
思考这个问题的另一种方式是将焦点转移到平衡树上。什么使它保持平衡?对于每一层,左子树的高度与右子树的高度相同,因此该层的每个根节点都有两个节点或一个节点。不平衡的情况则相反。
现在你明白了不平衡和平衡树的样子,你可以开始比较它们的实现。二叉搜索的实现是什么?你不断将树减半直到找到目标位置。作为一个模式,每当你处理涉及减少输入数量一半的问题时,复杂度是log(N),因为我们使用的是以x为底的对数。
log(aN) = x => a^x = N