找二叉树中节点1和2的最近公共祖先节点

class TreeNode:

def init(self, x):

self.val = x

self.left = None

self.right = None

@param root TreeNode类

@param o1 int整型

@param o2 int整型

@return int整型

找二叉树中节点1和2的最近公共祖先节点

class Solution:

def lowestCommonAncestor(self, root, o1, o2 ):
    res = self.process(root, o1, o2)
    return res.val  # 返回最近公共祖先节点值
    
# write code here
def process(self, root, o1, o2):  # 递归
    if not root or root.val == o1 or root.val == o2:  # 节点为空/节点为o1/节点为o2都直接返回该节点
        return root
    left = self.process(root.left, o1, o2)  # 左子树
    right = self.process(root.right, o1, o2)  # 右子树
    if left and right:  # 当左右都不返回None时找到了最近公共祖先节点,即为root
        return root  
    return left if left else right  # 左右不都为None时,返回非None的那个,左右都返回None时整体返回None
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值