Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 第一次平衡树-noob问题_Algorithm_Tree_Binary Tree - Fatal编程技术网

Algorithm 第一次平衡树-noob问题

Algorithm 第一次平衡树-noob问题,algorithm,tree,binary-tree,Algorithm,Tree,Binary Tree,我开始学习如何在面试中平衡树木,我有一些问题 有可能平衡一个普通的二叉树吗?如果是,应使用哪种算法? 我是否必须使用AVL或红黑树来获得平衡树?这些是如何工作的?你能提供尽可能简单的链接来解释这些吗? 我读了一些关于旋转和重量的书,但我现在有点困惑。。。AVL和红黑树是平衡的普通二叉树,并且在平衡的某些定义中保持这种平衡。我不是一个计算机科学老师,我不会自己解释算法,我猜你也不是在寻找维基百科的剪贴:- 现在,对于平衡二叉树:如果树是一个搜索树,即“排序”,但是“平衡”并没有多大意义,如果不是的

我开始学习如何在面试中平衡树木,我有一些问题

有可能平衡一个普通的二叉树吗?如果是,应使用哪种算法? 我是否必须使用AVL或红黑树来获得平衡树?这些是如何工作的?你能提供尽可能简单的链接来解释这些吗?
我读了一些关于旋转和重量的书,但我现在有点困惑。。。AVL和红黑树是平衡的普通二叉树,并且在平衡的某些定义中保持这种平衡。我不是一个计算机科学老师,我不会自己解释算法,我猜你也不是在寻找维基百科的剪贴:-

现在,对于平衡二叉树:如果树是一个搜索树,即“排序”,但是“平衡”并没有多大意义,如果不是的话,你总是可以重新创建树。最简单的算法是使用一个数组,该数组包含树中的所有元素,并按照从无序遍历中轻松获得的排序顺序排列。然后围绕这一总体思路构建一个算法:

将数组的中间元素作为树的根。这将创建一个树节点和两个左右数组,用于形成左右子树 递归地应用同样的算法,从左数组创建一棵树,从右数组创建一棵树。这两棵树将成为父节点的子节点。 当数组的元素数为偶数时,您可能需要小心:没有明显的中间元素,删除两个候选元素中的一个将创建不同大小的数组。我懒得进一步分析这一点,看看这是否能抵消整个平衡问题

当然,每次你换树的时候做这样的事情并不是一个好主意;你真的想用AVL这样的自平衡树来实现这一点。在创建树之后执行此操作可能也没有那么有用:您可以使用数组本身并对其进行二进制搜索,而不是创建树。数组只是二叉树的另一种形式


编辑:许多计算机科学家花费大量时间开发在某些情况下性能良好的数据结构和算法是有原因的。滚动您自己版本的平衡二叉树不太可能打败这些…

嗯。。。AVL和红黑树是平衡的普通二叉树,并且在平衡的某些定义中保持这种平衡。我不是一个计算机科学老师,我不会自己解释算法,我猜你也不是在寻找维基百科的剪贴:-

现在,对于平衡二叉树:如果树是一个搜索树,即“排序”,但是“平衡”并没有多大意义,如果不是的话,你总是可以重新创建树。最简单的算法是使用一个数组,该数组包含树中的所有元素,并按照从无序遍历中轻松获得的排序顺序排列。然后围绕这一总体思路构建一个算法:

将数组的中间元素作为树的根。这将创建一个树节点和两个左右数组,用于形成左右子树 递归地应用同样的算法,从左数组创建一棵树,从右数组创建一棵树。这两棵树将成为父节点的子节点。 当数组的元素数为偶数时,您可能需要小心:没有明显的中间元素,删除两个候选元素中的一个将创建不同大小的数组。我懒得进一步分析这一点,看看这是否能抵消整个平衡问题

当然,每次你换树的时候做这样的事情并不是一个好主意;你真的想用AVL这样的自平衡树来实现这一点。在创建树之后执行此操作可能也没有那么有用:您可以使用数组本身并对其进行二进制搜索,而不是创建树。数组只是二叉树的另一种形式

编辑:许多计算机科学家花费大量时间开发在某些情况下性能良好的数据结构和算法是有原因的。滚动您自己版本的平衡二叉树不太可能打败这些

有可能平衡一个普通的二叉树吗?如果是,哪一个 应该使用什么算法

在中,您可以构建一个完整的树,并使用中的元素填充它

这是再好不过的了,因为在极少数情况下,BST可能会退化为链表,其中所有节点都有一个子元素为null。在这种情况下,访问中间的元素本身。

我是否必须使用AVL或红黑树来获得 平衡树

还有其他平衡树,如,和其他数据结构,而不是树,如。您可能需要查看已知的列表,尤其是

这些怎么办 工作你能提供简单的链接来解释这些吗 尽可能

我发现维基百科上的文章内容丰富,内容丰富。如果你有一些不明白的具体问题,你应该问

另外:尝试自己实现一个平衡的树实现一个已知的树,而不是发明一个新的树-当然-对于教育目的来说是很好的,通过这样做-你一定会明白它是如何工作的

有可能平衡一个普通的二叉树吗?如果是,哪一个 应该使用什么算法

在中,您可以构建一个完整的树,并使用中的元素填充它

这是再好不过的了,因为在极少数情况下,BST可能会退化为链表,其中所有节点都有一个子元素为null。在这种情况下,访问中间的元素本身。

我是否必须使用AVL或红黑树来获得 平衡树

还有其他平衡树,如,和其他数据结构,而不是树,如。您可能需要查看已知的列表,尤其是

这些是如何工作的?你能提供简单的链接来解释这些吗 尽可能

我发现维基百科上的文章内容丰富,内容丰富。如果你有一些不明白的具体问题,你应该问

另外:尝试自己实现一个平衡的树实现一个已知的树,而不是发明一个新的树-当然-对于教育目的来说是很好的,通过这样做-你将明确地了解它是如何工作的。

是否有可能平衡一个普通的二叉树:在这个基础上,你可以构建一个完整的树,并按遍历顺序用元素填充它。这就是您所寻找的答案吗?是否有可能平衡一个普通的二叉树:在上,您可以构建一个完整的树,并按遍历顺序用元素填充它。这就是你想要的答案吗?