栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在二叉搜索树中删除

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在二叉搜索树中删除

问题A

我认为两棵树是平衡的。

void deleteTree(node* A, node* B){    if(A == NULL || B == NULL)        return;    if(A->data == B->data)    {        deleteTree(A->left, B->left);        deleteTree(A->right, B->right);        removeNode(A); // Normal BST remove    }    else if(A->data > B->data)    {        Node* right = B->right;        B->right = NULL;        deleteTree(A->left, B);        deleteTree(A, right);    }    else // (A->data < B->data)    {        Node* left = B->left;        B->left = NULL;        deleteTree(A->right, B);        deleteTree(A, left);    }}

时间复杂度:

T(N) = 2 * T(N / 2) + O(1)

因此,根据主定理,总体复杂度为 O(N) 。空间复杂度为 O(1) 。一个缺点是我破坏了B。

PS:我手头没有BST实现,因此我无法为您测试代码。但是我认为这个想法是正确的。

问题B

将哈希表用于一棵树,然后遍历另一棵树。您将获得 O(N) 的时间和空间复杂度。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号