二叉搜尋樹的刪除學習

2021-09-06 01:55:28 字數 815 閱讀 6016

看演算法導論上,要設定父節點,然後求presuccessor。但是感覺這樣子增加了不少麻煩,搜到乙個不用父節點的方法,但是看起來也相當複雜。

**貼上:

struct node ;

void del(node *&head, int x)

else

node *n = m->lchild;

m->lchild = n->rchild;

n->lchild = p->lchild;

n->rchild = p->rchild;

head = n;

free(p);

}return;

}node *q,*m,*n;

if(x > p->value)

else if(q->rchild->lchild == null) else

n = m->lchild;

m->lchild = n->rchild;

n->lchild = q->lchild;

n->rchild = q->rchild;

p->rchild = n;

free(q);}}

else else if(q->lchild->rchild == null) else

n = m->rchild;

m->rchild = n->lchild;

n->lchild = q->lchild;

n->rchild = q->rchild;

p->lchild = n;

free(q);}}

}

二叉搜尋樹 二叉搜尋樹的刪除操作

如圖刪除 7,4,2直接刪除接可以 如圖 刪除6把7拉上去 如圖 刪除3 4沒有左孩子直接返回4 所以最後的結果只是4覆蓋3 上 class solution if key root.val else if key root.val else else if root.right null else...

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

這裡就把平衡二叉樹中刪除節點遇到的情況都搞清楚。第一種情況 沒找到刪除的節點,遍歷到空節點直接返回了 找到刪除的節點 第二種情況 左右孩子都為空 葉子節點 直接刪除節點,返回null為根節點 第三種情況 刪除節點的左孩子為空,右孩子不為空,刪除節點,右孩子補位,返回右孩子為根節點 第四種情況 刪除節...

二叉搜尋樹的刪除 二叉樹 搜尋樹中的刪除操作

二叉搜尋樹刪除節點就涉及到結構調整了。給定乙個二叉搜尋樹的根節點 root 和乙個值 key,刪除二叉搜尋樹中的 key 對應的節點,並保證二叉搜尋樹的性質不變。返回二叉搜尋樹 有可能被更新 的根節點的引用。一般來說,刪除節點可分為兩個步驟 首先找到需要刪除的節點 如果找到了,刪除它。說明 要求演算...