235. 二叉搜索树的最近公共祖先
二叉搜索树的最近公共祖先
这题可以用之前的一般二叉树的解法进行解决。236. 二叉树的最近公共祖先
701. 二叉搜索树中的插入操作
二叉搜索树中的插入操作
思路
class Solution:
def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
if not root:
return TreeNode(val)
if val < root.val:
root.left=self.insertIntoBST(root.left,val)
if val>root.val:
root.right=self.insertIntoBST(root.right,val)
return root
450. 删除二叉搜索树中的节点
删除二叉搜索树中的节点
难点
需要保证删除后的二叉树还是二叉搜索树。
class Solution:
def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]:
if not root:
return None
if root.val==key:
if root.left==None and root.right==None:
return None
elif root.left!=None and root.right==None:
return root.left
elif root.left==None and root.right!=None:
return root.right
else:
cur = root.right
while cur.left!=None:
cur=cur.left
cur.left = root.left
return root.right
elif key < root.val:
root.left=self.deleteNode(root.left,key)
elif key > root.val:
root.right = self.deleteNode(root.right,key)
return root