[英]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)到底是什么意思? 語法讓我失望。 我知道這是指這樣一個情況,如果它有一個孩子,只需重新分配給父母即可。 但是我還是很困惑
謝謝,
parent.left = (current.left === null ? current.right : curent.left);
手段
if (current.left === null)
parent.left = current.right;
else
parent.left = curent.left;
詳細信息請參見: Wikipedia-三元運算符
因此,基本上,這就是說,如果當前節點(我們要刪除的節點)只有一個並且只有一個子代,我們必須將當前子代分配為父代的子代,這樣我們就不會從樹上失去該子代。 正如moller所說,分配是三元運算符,因此如果測試
parent.left = (current.left === null ? current.right : curent.left);
計算結果為true parent.left設置為current.right,否則設置為current.left。
所有這些檢查都是為了維護二叉搜索樹的屬性,其中左子級是<=父級,右子級是> parent。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.