Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Isn';这不是一个平衡的二叉树吗?_Algorithm_Tree - Fatal编程技术网

Algorithm Isn';这不是一个平衡的二叉树吗?

Algorithm Isn';这不是一个平衡的二叉树吗?,algorithm,tree,Algorithm,Tree,下图中的树不是一棵平衡的二叉树吗?我的一个朋友认为这是不平衡的,因为节点A在距离根E的深度2处,而G和L在距离E的深度4处,因此E必须不平衡-2倍。我认为,只有当:绝对值(左子树的高度-右子树的高度)>1由于D而不是2,E的左子树的高度是3时,节点才是不平衡的。说服我朋友的最好方法是什么???根据,如果它是最小可能的高度,它是平衡的。在这种情况下,您可以将树叶“G”和“L”移动到“A”,树高将为4。有一种方法可以使树的高度变小,这样树就不平衡了。 任何树的高度ceil(log2(n))都是平衡的

下图中的树不是一棵平衡的二叉树吗?我的一个朋友认为这是不平衡的,因为节点A在距离根E的深度2处,而G和L在距离E的深度4处,因此E必须不平衡-2倍。我认为,只有当:

绝对值(左子树的高度-右子树的高度)>1


由于D而不是2,E的左子树的高度是3时,节点才是不平衡的。说服我朋友的最好方法是什么???

根据,如果它是最小可能的高度,它是平衡的。在这种情况下,您可以将树叶“G”和“L”移动到“A”,树高将为4。有一种方法可以使树的高度变小,这样树就不平衡了。
任何树的高度
ceil(log2(n))
都是平衡的。

实际上
ceil(log2(16))+1=5
,最小可能高度是5。此外,如果我们能够在最小高度树中设置任意15个节点,我们将得到高度为4的完全平衡树。添加的任何节点都会将高度增加到5,这证明您是对的;)叶子“G”和“L”都可以移动到父级“A”。树的高度将是3。对不起,我应该提到这是一个二进制搜索树,所以G和L不能移动到a。此外,这是一个AVL树。根据维基百科,“节点的高度是从该节点到叶子的最长向下路径的长度。根的高度是树的高度。”节点B的高度是2,节点J的高度是3。这个差不大于1,这个条件对于树中的每个节点都是正确的,所以我相信这棵树是平衡的。树有14个节点,ceil(log2(14+1))=4,这是树的高度。@SalilSurendran那么它确实是平衡的AVL树,但不是一般的平衡树。@SalilSurendran BST具有相同的节点和高度3(lisp表示法):
(H(D(B(A nil nil)(C nil))(F(E nil)(J nil))(L(J(I nil)(K nil))(M nil)(N nil))))
你在争论“平衡”一词的两个定义。你不能争论一个比另一个好。。。你只要选一个就行了。