二叉搜索树分配给 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;
所以基本上这只是说如果当前节点(我们要删除的节点)只有一个 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.
我有一个关于从二叉搜索树函数中删除部分的问题。
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;
所以基本上这只是说如果当前节点(我们要删除的节点)只有一个 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.