一.题目:
给一个二叉搜索树,和一个待插入的值,要求插入后仍是一颗二叉搜索树.
二.解题思路:
我们从根节点开始遍历,判断新的节点应该插入它的左子树还是右子树,然后进入更深一层的递归,注意每一层递归都是返回以当前节点为根节点的二叉树.
代码如下:
# 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:
if root.right:
root.right = self.insertIntoBST(root.right,val)
else:
root.right = TreeNode(val)
else:
if root.left:
root.left = self.insertIntoBST(root.left,val)
else:
root.left = TreeNode(val)
return root
本文详细解析了在二叉搜索树中插入新值的方法,确保树的特性不变。通过递归查找合适位置并进行插入,使树保持有序状态。
942

被折叠的 条评论
为什么被折叠?



