题目描述
给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。
注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果
示例
给定二叉搜索树:
4
/ \
2 7
/ \
1 3
和 插入的值: 5
递归
思路:
递归考虑一般3点:
- 出口条件(结束条件)
- 情况
n
变化到n+1
,及非出口条件 - 初始条件
对应这道题,就是
- 当递归到
root
为空时候,返回TreeNode(val)
- 因为是二叉搜索树(右子树大于左子树),所以要判断val值和当前root值大小
- 从根节点开始
代码
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def insertIntoBST(self, root, val):
"""
:type root: TreeNode
:type val: int
:rtype: TreeNode
"""
if not root:
return TreeNode(val)
if root.val < val:
root.right = self.insertIntoBST(root.right, val)
else:
root.left = self.insertIntoBST(root.left,val)
return root
AC!舒服.