递归
class Solution:
def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
node = TreeNode(val)
if root==None:
return node
if root.val>val:
root.left=self.insertIntoBST(root.left,val)
if root.val<val:
root.right=self.insertIntoBST(root.right,val)
return root
迭代
class Solution:
def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
node = TreeNode(val)
if root==None:
return node
cur=root#需要用cur记录一下root,因为后面root会变成left或者right,不是一整个完全的搜索树。
while root:
if val>root.val and root.right:#存在右结点就继续迭代
root=root.right
elif val>root.val and not root.right:#没有就把右结点赋值val
root.right=node
return cur#一定要在这里return,不能放在while外,不然会死循环
if val<root.val and root.left:
root=root.left
elif val<root.val and not root.left:
root.left=node
return cur