2019-08-26LeetCode236. 二叉樹的最近公共祖先

30min

class Solution2:
    def __init__(self):
        self.res=None

    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        self.dfs(root,p,q)
        return self.res

    def dfs(self,root:TreeNode,p:TreeNode,q:TreeNode)->bool:
        if not root:return False
        left=1 if self.dfs(root.left,p,q) else 0
        right=1 if self.dfs(root.right,p,q) else 0
        mid=1 if root==p or root==q else 0
        if left+right+mid>1:self.res=root
        return left or right or mid  # 這里要有mid

有問題的寫法,函數(shù)功能寫得很亂

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        if not root: return None
        if self.subTreeHasNode(root,p,q):return root
        left=self.lowestCommonAncestor(root.left,p,q)
        if left:return left
        right=self.lowestCommonAncestor(root.right,p,q)
        if right:return right

    def subTreeHasNode(self,root:TreeNode,p:TreeNode,q:TreeNode)->bool:
        if not root:return True
        mid=True if root==p or root==q else False
        left=self.subTreeHasNode(root.left,p,q)
        right=self.subTreeHasNode(root.right,p,q)
        if (mid and left)or (mid and right)or(left and right):return True #到底是含有一個(gè)節(jié)點(diǎn)?還是兩邊都有呢?
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容