二叉搜尋樹的總結

2021-07-14 22:19:06 字數 2012 閱讀 3316

二叉搜尋樹(binarysearchtree):

1)特點:

1. 每個節點都有乙個作為搜尋依據的關鍵碼(key),所有節點的關鍵碼互不相同。

2. 左子樹上所有節點的關鍵碼(key)都小於根節點的關鍵碼(key)。

3. 右子樹上所有節點的關鍵碼(key)都大於根節點的關鍵碼(key)。

4. 左右子樹都是二叉搜尋樹

2)插入操作:

bool insert(const k &key,const v &value)

node *cur = _root;

node *parent = null;

while(cur != null)

else if(cur->_key < key)

else

return false;

} node *node = new node(key,value);

if(key > parent->_key)

else

}

遞迴實現:

bool _insert_r(node* &root,const k &key,const v &value)

if(key > root->_key)

return _insert_r(root->_right,key,value);

if(key < root->_key)

return _insert_r(root->_left,key,value);

else

return false;

}

3)刪除操作:

bool remove(const k &key)

node *del = _root;

node *parent = _root;

while(del != null)

else if(del->_key < key)

else

break;

} if(del != null)

else

}else if(del->_right == null) //缺右子樹就用左子樹來補

else

}else //左右都不為空就與右子樹上中序遍歷的第乙個數交換

swap(del->_key,firstinorder->_key);

swap(del->_value,firstinorder->_value);

del = firstinorder;

if(parent->_left = del) //firstinorder的左數必為空

parent->_left = del->_right;

else

parent->_right = del->_right;

}delete del;

return true;

} else

}

遞迴實現:

bool _remove_r(node * &root,const k &key)

if(root->_key > key)

_remove_r(root->_left,key);

else if(root->_key < key)

_remove_r(root->_right,key);

else //root->_key == key

else if(del->_right == null) //缺右子樹就用左子樹來補

else //左右都不為空就與右子樹上中序遍歷的第乙個數交換

swap(root->_key,firstinorder->_key);

swap(root->_value,firstinorder->_value;

return _remove_r(root->_right,key);

} }

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

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

如圖刪除 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...