二叉搜索树分配给 Parent

Binary Search Tree Assign to Parent

我有一个关于从二叉搜索树函数中删除部分的问题。

switch (childCount){
    case 0: // It has no children then remove parent
        if(current.value < parent.value){
        parent.left = null;
        } else{
        parent.right = null;
        }
       break;
    case 1: //it has 1 children, reassign to parent
         if(current.value < parent.value){
         parent.left = (current.left === null ? current.right :   curent.left);
         } else {
        parent.right = (current.left === null ? current.right :   current.left);
         }  
        break;

我不是很了解案例 1,以及 parent.left 和 parent.right 的值。 (current.left === null ? current.right : curent.left) 到底是什么意思? 语法让我失望。 我知道它指的是如果它有一个 child,只需重新分配给 parent。但我还是一头雾水

谢谢,

parent.left = (current.left === null ? current.right : curent.left);

表示

if (current.left === null)
    parent.left = current.right;
else
    parent.left = curent.left;

详情见:Wikipedia - ternary operator

所以基本上这只是说如果当前节点(我们要删除的节点)只有一个 child 我们必须将电流 child 分配为 [= parent 的 22=] 所以我们不会从树中丢失 child。正如 moller 所说,赋值是三元运算符,所以如果测试

parent.left = (current.left === null ? current.right : curent.left);

评估为真 parent.left 设置为 current.right,否则设置为 current.left。

所有这些检查都是为了维护二叉搜索树的 属性,其中左 children <= parent 和右 children 大于 parent.