And*_*v93 2 algorithm pseudocode binary-search-tree data-structures
我正在尝试编写一个函数来从二叉树中删除一个节点.我还没有对该函数进行编码,我正在尝试考虑删除节点时应考虑的不同条件.我猜可能的条件是:
该节点没有子节点
该节点有一个孩子
该节点有2个孩子
在每种情况下,执行删除功能的算法是什么?
这是你在任何有关算法的标准教科书中都能找到的东西,但是我们假设你对不平衡的情况感兴趣(平衡树通常在删除后执行一些称为"旋转"的重新平衡操作)并使用"明显的"数据结构(tree_node
结构)保存值和两个指向其他指针tree_node
):
NULL
;O(tree_height) = O(n)
,但这不是问题(至少在理论上),因为这将无法找到节点的复杂性.