数据结构树的复杂性

时间:2016-01-27 21:29:19

标签: tree

我有tree

tree

我确信它是一个最大堆,我不知道它是否是一个完整的树,因为在课程中注意到它表示当每个非离开节点有两个孩子时,二叉树是一个完整的树

2 个答案:

答案 0 :(得分:2)

Max-heap。你有一个例子,是的,你的树是最大堆。

此外,对于它是一个完整的树,每个级别都要填充节点,如this示例中所示。你的树是一棵完整的树,但不是一棵完整的树。希望这会有所帮助。

要成为binary search tree,必须遵守一些规则。 例如,您有根,左和右孩子。

   2
1    3

左侧树(由此处的单个节点构成)必须具有比根更低的值,而右侧树(此处由1个单节点构成)必须具有大于根的所有值。所以不,你的树不是二叉搜索树。

关于第二个问题(你应该发布1个问题/帖子)...如果树不是二叉搜索树,最坏的情况是O(n)。如果它是二进制搜索树,在最坏的情况下会得到O(log n),如果你有一个平衡树!。

如果您有二叉树,最坏的情况是O(n),因为这是有效的binary search tree

balanced binary search tree针对不同类型的操作进行了优化。在一般树中,根据它的构建方式,最坏的情况是O(n)!

答案 1 :(得分:0)

“二进制堆是使用二叉树创建的堆数据结构。” - Wikipedia

二叉树表示每个节点有2个子引用。

如果二叉树中的每个节点没有两个子节点,则它不是完整树。

O(logn)用于搜索,因为在每个节点上,您将数据集分成两半(因为最多有2个子节点),向左或向右搜索,直到您到达叶子或您要搜索的数据。