问题LeetCode给定一棵二叉搜索树(BST),找到BST中两个给定节点的最低共同祖先(LCA)。根据维基百科上LCA的定义:“最低公共祖先定义在两个节点p和q之间,作为T中同时具有p和q作为后代的最低节点(我们允许一个节点是其自身的后代)。”例1:【外链图片传输失败,源站可能有防盗链机制,建议保存图片直接上传(img-dGzMQij7-1610372086960)(https://assets.leetcode.com/u...]输入:root=[6,2,8,0,4,7,9,null,null,3,5],p=2,q=8输出:6解释:节点2和的LCA8为6.例2:【外链图片传输失败,源站可能有防盗链机制,建议保存图片直接上传(img-KanePah3-1610372086969)(https://assets.leetcode.com/u...]输入:root=[6,2,8,0,4,7,9,null,null,3,5],p=2,q=4输出:2解释:LCA节点2和4为2,因为根据LCA定义,节点可以是其自身的后代。示例3:输入:root=[2,1],p=2,q=1Output:2Constraints:The树中的节点数在[2,105].-109<=Node.val<=109所有Node.val都是唯一的。p!=qp并且q将存在于BST中。问题给定一棵二叉搜索树,找到树中两个指定节点的最近共同祖先百度百科中最近共同祖先的定义是:“对于有根树T的两个节点p和q,最近共同祖先表示为节点x,满足x是p和q的祖先并且x的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定以下二叉搜索树:root=[6,2,8,0,4,7,9,null,null,3,5]示例1:输入:root=[6,2,8,0,4,7,9,null,null,3,5],p=2,q=8输出:6解释:节点2和节点8最近的共同祖先是6。示例2:输入:root=[6,2,8,0,4,7,9,null,null,3,5],p=2,q=4输出:2解释:最近的节点2和节点4的共同祖先是2,因为根据定义最近的公共祖先节点可以是节点本身。解释:所有节点的值都是唯一的。p和q是不同的节点,都存在于给定的二叉搜索树中。思路遍历利用了二叉搜索树的性质,中序遍历是递增的顺序。所以可以同时判断p和q的大小,看它们是都在左边还是都在右边,或者都在。Python3代码#定义二叉树节点。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:deflowestCommonAncestor(self,root:'TreeNode',p:'TreeNode',q:'TreeNode')->'TreeNode':ancestor=rootwhileTrue:#pq在左边如果p.val
