代码随想录Day20|二叉树6_3|二叉搜索树_2

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

  • 暂时理解了代码,背着写出来了,还需要复习
class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        if not root:
            return None
        if root==q or root==p:
            return root
        left = self.lowestCommonAncestor(root.left,p,q)
        right = self.lowestCommonAncestor(root.right,p,q)

        if not left and right:
            return right
        elif not right and left:
            return left
        elif left and right:
            return root

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

  • 比上题简单,根据二叉搜索树的
class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        if not root:
            return None
        if root.val>p.val and root.val>q.val:
            return self.lowestCommonAncestor(root.left,p,q)
        elif root.val<p.val and root.val<q.val:
            return self.lowestCommonAncestor(root.right,p,q)
        else:
            return root

701.二叉搜索树中的插入操作

  • 迭代比较容易想出来,递归看了答案代码写的
## 迭代
class Solution:
    def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
        if not root:
            return TreeNode(val)
        pre = root
        newnode = TreeNode(val)
        cur = root.left if val<root.val else root.right
        while(cur):
            pre = cur
            if cur.val>val:
                cur = cur.left
            else:
                cur = cur.right
        if pre.val>val:
            pre.left = newnode
        else:
            pre.right = newnode
        return root
## 递归
class Solution:
    def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
        if not root:
            return TreeNode(val)
        if val > root.val:
            root.right = self.insertIntoBST(root.right,val)
        else:
            root.left = self.insertIntoBST(root.left,val)
            
        return root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值