力扣_二叉搜索树_python版本

发布于:2025-07-12 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、108. 将有序数组转换为二叉搜索树

在这里插入图片描述

  • 代码:
class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
        if not nums:
            return None
        m = len(nums)//2
        left = self.sortedArrayToBST(nums[:m])
        right = self.sortedArrayToBST(nums[m+1:])
        return TreeNode(nums[m], left, right)

二、98. 验证二叉搜索树

在这里插入图片描述

  • 代码:
class Solution:
    def isValidBST(self, root: Optional[TreeNode], left=-inf, right=inf) -> bool:
        if root is None:
            return True
        x = root.val
        return left < x < right and self.isValidBST(root.left, left, x) and self.isValidBST(root.right, x, right)

三、236. 二叉树的最近公共祖先

在这里插入图片描述

  • 思路:有一个前提要知道,公共祖先一定是存在的。最不济也会是root。
  • 代码:
class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        if not root or root == p or root == q:
            return root
        left = self.lowestCommonAncestor(root.left, p, q)
        right = self.lowestCommonAncestor(root.right, p, q)
        if not left:
            return right
        if not right:
            return left
        return root       # 如果 left和right都有返回,返回这个root(公共节点)

四、235. 二叉搜索树的最近公共祖先

在这里插入图片描述

  • 代码:
class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        x = root.val
        if p.val<x and q.val<x:
            return self.lowestCommonAncestor(root.left, p, q)
        if p.val>x and q.val>x:
            return self.lowestCommonAncestor(root.right, p, q)
        return root

网站公告

今日签到

点亮在社区的每一天
去签到