701. 二叉搜索树中的插入操作
说明
给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。
注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。
示例
给定二叉搜索树:
4
/ \
2 7
/ \
1 3
和 插入的值: 5
你可以返回这个二叉搜索树:
4
/ \
2 7
/ \ /
1 3 5
或者这个树也是有效的:
5
/ \
2 7
/ \
1 3
\
4
题解思路
使用递归比较val和当前节点的大小,如果大在右子树进行递归比较,反之在左子树进行递归比较
代码实现
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:
def dfs(node, num):
if num > node.val:
right = node.right
if not right:
node.right = TreeNode(num)
else:
dfs(right, num)
else:
left = node.left
if not left:
node.left = TreeNode(num)
else:
dfs(left, num)
if not root:
root = TreeNode(val)
else:
dfs(root, val)
return root