python中修改二叉搜索树插入新节点的put()方法,使得如果待插入节点的键已在树中,就将节点的值更新为新值,而不是用同一个键插入一个新节点
时间: 2024-01-22 19:17:30 浏览: 102
可以在二叉搜索树节点的 `put()` 方法中添加一个判断,判断当前节点的键是否与待插入节点的键相同,如果相同就更新当前节点的值,否则就按照二叉搜索树的规则插入新节点。代码如下:
```python
class TreeNode:
def __init__(self, key, val, left=None, right=None, parent=None):
self.key = key
self.payload = val
self.leftChild = left
self.rightChild = right
self.parent = parent
def put(self, key, val):
if key == self.key: # 如果待插入节点的键已在树中,就更新节点的值
self.payload = val
elif key < self.key:
if self.leftChild:
self.leftChild.put(key, val)
else:
self.leftChild = TreeNode(key, val, parent=self)
else:
if self.rightChild:
self.rightChild.put(key, val)
else:
self.rightChild = TreeNode(key, val, parent=self)
```
这样,如果我们有一个二叉搜索树 `mytree`,并且其中已经存在键为 3 的节点,那么执行 `mytree.put(3, 'new value')` 就会更新键为 3 的节点的值,而不是插入一个新节点。
阅读全文