数据结构树复杂度

data structure tree complexity

我有这个tree

我确定它是一个最大堆,但我不知道它是否是一棵完整的树,因为在课程笔记中它说当每个 non-leave 节点有两个 children.

Max-heap。你有一个例子,是的,你的树是 max-heap。

此外,要使其成为一棵完整的树,每个级别都必须填充节点,如 this 示例中所示。你的树是一棵完整的树,但不是一棵完整的树。希望这有帮助。

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

   2
1    3

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

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

如果你有一个二叉树,最坏情况是 O(n) 因为这个有效 binary search tree.

A balanced binary search tree 针对不同类型的操作进行了优化。在一般的树中,取决于它是如何构建的,最坏的情况将是 O(n)!

"A binary heap is a heap data structure created using a binary tree." - Wikipedia

一个binary-tree表示每个节点有2个child引用。

如果binary-tree中的每个节点都没有两个children那么它就不是full-tree。

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