(樹 22)刪除BST中某個節點值為key的

2021-10-25 02:22:31 字數 1024 閱讀 5932

450. 刪除二叉搜尋樹中的節點

**隨想錄

力扣發送門

分5種情況,第一種是翻個底朝天都找不到node-val==key的,說明刪除不了,返回空指標。第2、3、4、5種情況是找到了node->val == key的,那麼根據節點的左右孩子是否存在進行了討論。最複雜的是左右孩子都不為空的。需要將節點的左孩子,放到節點的右孩子的最左邊(所以先要找到這個最左孩子),作為左孩子(這段結合carl的圖自己畫畫就直觀了)。後面的就是node->val跟key的比較,然後用左孩子或者右孩子去接住對應遞迴的結果。其實不需要刪除tmp節點對本題的提交沒有影響,但是會影響效率,我覺著是因為造成了資料的冗餘吧

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class solution

cur->left = root->left;

treenode *tmp = root; //儲存root,用來後面刪除,

root = root->right;

delete tmp; //因為root改變了,原來處於root的指標結構就要去刪除釋放,如果不釋放也行,對本題不影響結果,但是會存在結構冗餘}}

if(key < root->val) root->left = deletenode(root->left, key);

if(key > root->val) root->right = deletenode(root->right, key);

return root;

}};

el tree 設定目錄樹中的某個節點為高亮狀態

現在可以實現,點選某個節點,該節點會紅色高亮,那怎麼讓這個樹載入出來的時候 預設某個節點高亮呢?element ui裡面帶勾選框的可以預設勾選上,這個沒有勾選框 其實很簡單。element ui的樹形控制項支援setcurrentkey 方法,只需要將你要設定的節點的key值設定進去就可以了,前提是...

從鍊錶中刪除總和值為0的連續節點

給你乙個鍊錶的頭節點 head,請你編寫 反覆刪去鍊錶中由 總和 值為 0 的連續節點組成的序列,直到不存在這樣的序列為止。刪除完畢後,請你返回最終結果鍊錶的頭節點。你可以返回任何滿足題目要求的答案。注意,下面示例中的所有序列,都是對 listnode 物件序列化的表示。示例 1 輸入 head 1...

刪除鍊錶中所有值為k的節點

給定乙個單鏈表,刪除其中值為 的所有節點。例如 1 2 6 3 4 5 6 刪除其中值為6的節點,返回 1 2 3 4 5 這是乙個簡單的鍊錶操作題。刪除是要考慮的節點所在的位置 頭部,中間和尾部 分開處理一下好了。主要過程如下描述 i.wh ileh ead va l ta rget head h...