汉字域名的网站,闵行网页设计,如何将网站和域名绑定域名,动漫版236. 二叉树的最近公共祖先 题目-中等难度示例1. dfs 题目-中等难度
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为#xff1a;“对于有根树 T 的两个节点 p、q#xff0c;最近公共祖先表示为一个节点 x#xff0c;满足 x 是 p… 236. 二叉树的最近公共祖先 题目-中等难度示例1. dfs 题目-中等难度
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为“对于有根树 T 的两个节点 p、q最近公共祖先表示为一个节点 x满足 x 是 p、q 的祖先且 x 的深度尽可能大一个节点也可以是它自己的祖先。”
示例
示例 1 输入root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 1 输出3 解释节点 5 和节点 1 的最近公共祖先是节点 3 。 示例 2 输入root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 4 输出5 解释节点 5 和节点 4 的最近公共祖先是节点 5 。因为根据定义最近公共祖先节点可以为节点本身。 示例 3 输入root [1,2], p 1, q 2 输出1 提示 树中节点数目在范围 [2, 105] 内。-109 Node.val 109所有 Node.val 互不相同 。p ! qp 和 q 均存在于给定的二叉树中。 来源力扣LeetCode 链接https://leetcode.cn/problems/summary-ranges 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
1. dfs
时间 52ms 击败 68.44%使用 Python 的用户 内存 24.04MB 击败 62.53%使用 Python 的用户
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val x
# self.left None
# self.right Noneclass Solution(object):def lowestCommonAncestor(self, root, p, q)::type root: TreeNode:type p: TreeNode:type q: TreeNode:rtype: 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 left and right:return root# 其他情况只存在于当前节点的左子树或者右子树return left if left else right