《Leetcode of September 》701. 二叉搜索树中的插入操作
# 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:
#如果是空树,直接将节点插入就可以了
if not root:
return TreeNode(val)
#如果插入的节点是大于根节点,那肯定是在右子树插
if root.val<val:
#如果右子树是空,直接插入;否则递归的去插入右子树
if not root.right:
root.right = TreeNode(val)
else:
self.insertIntoBST(root.right,val)
#如果插入节点的值是小于根节点,那同理可得
if root.val>val:
if not root.left:
root.left = TreeNode(val)
else:
self.insertIntoBST(root.left,val)
return root
-
首先关于树的题目尽量用递归去解决,因为树的定义就是用递归定义的 其次这是一个二叉搜索树,其特点就是中序遍历是一个严格的递增数列 利用其性质,然后判断根节点和要插入的关系,调用递归去插入 如果大于根节点那就在右子树插入并且如果右子树为空,直接插入;否则递归 如果小于根节点那就在左子树插入并且如果左子树为空,直接插入;否则递归 返回树
总结:充分利用二叉搜索树的性质和递归。
下一篇:
简图记录-算法刷题练习建议与要点
