📌  相关文章
📜  二叉树,二叉搜索树和AVL树中不同操作的复杂性

📅  最后修改于: 2021-04-24 16:18:06             🧑  作者: Mango

在本文中,我们将讨论二进制树(包括BST和AVL树)中不同操作的复杂性。在理解本文之前,您应该具有以下基本概念:二叉树,二叉搜索树和AVL树。

二叉树中的主要操作是:搜索,插入和删除。我们将在二进制树中看到这些操作的最坏情况下的时间复杂性。

二叉树–
在二叉树中,一个节点最多可以有两个孩子。考虑图1所示的左偏二叉树。

  • 搜索:要搜索元素2,我们必须遍历所有元素(假设我们先进行广度优先遍历)。因此,在二叉树中搜索具有O(n)的最坏情况复杂度。
  • 插入:要插入元素作为2的左子元素,我们必须遍历所有元素。因此,在二叉树中插入具有O(n)的最坏情况复杂度。
  • 删除:要删除元素2,我们必须遍历所有元素以找到2(假设我们先进行广度优先遍历)。因此,二叉树中的删除具有O(n)的最坏情况复杂度。

二进制搜索树(BST)–
BST是一种特殊类型的二叉树,其中节点的左子节点的值小于父节点,右子节点的值大于父节点。考虑图2所示的左偏BST。

  • 搜索:要搜索元素1,我们必须遍历所有元素(顺序为3、2、1)。因此,在二叉搜索树中搜索具有O(n)的最坏情况复杂度。通常,时间复杂度为O(h),其中h是BST的高度。
  • 插入:要插入元素0,必须将其作为1的左子元素插入。因此,我们需要遍历所有元素(顺序为3、2、1)以插入0,其最坏情况下的复杂度为O(n)。通常,时间复杂度为O(h)。
  • 删除:要删除元素1,我们必须遍历所有元素以找到1(顺序为3、2、1)。因此,二叉树中的删除具有O(n)的最坏情况复杂度。通常,时间复杂度为O(h)。

AVL /高度平衡树–
AVL树是二叉搜索树,具有其他属性,即任何节点的左子树和右子树的高度之差不能超过1。例如,图2中所示的BST不是AVL,因为左子树之间的差节点3的-tree树和右子树是2。但是,图3中显示的BST是AVL树。

  • 搜索:要搜索元素1,我们必须遍历元素(顺序为5、4、1)= 3 = log 2 n。因此,在AVL树中搜索具有O(log 2 n)的最坏情况复杂度。
  • 插入:对于插入元素12,必须将其作为9的右子元素插入。因此,我们需要遍历元素(顺序为5、7、9)以插入最坏情况下复杂度为O(log 2 n)的12。
  • 删除:要删除元素9,我们必须遍历元素以找到9(顺序为5、7、9)。因此,二叉树中的删除具有O(log 2 n)的最坏情况复杂度。

我们将基于二叉树运算的复杂性讨论问题。

Que-1。普通二分搜索树中搜索,插入和删除操作的最坏情况下的时间复杂度是多少?
(A)所有的O(n)
(B)全部O(登录)
(C)O(登录)用于搜索和插入,O(n)用于删除
(D)O(登录)进行搜索,O(n)进行插入和删除

解决方案:如上所述,BST中的所有操作的最坏情况时间复杂度为O(n)。因此,正确的选项是(A)。

队列2。分别在二叉树,BST和AVL树中搜索的最坏情况下的时间复杂度是什么?
(A)所有的O(n)
(B)全部O(登录)
(C)O(n)表示二叉树,O(Logn)表示其他树
(D)O(n)用于二叉树和BST,O(Logn)用于AVL

解决方案:如前所述,二叉树和BST中的搜索操作具有O(n)的最坏情况时间复杂度。但是,AVL树的最坏情况下的时间复杂度为O(logn)。因此,正确的选项是(D)。