欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

題解 | #在二叉樹中找到兩個(gè)節(jié)點(diǎn)的最近公共祖先#

在二叉樹中找到兩個(gè)節(jié)點(diǎn)的最近公共祖先

http://fangfengwang8.cn/practice/e0cc33a83afe4530bcec46eba3325116

from sys import flags
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代碼中的類名、方法名、參數(shù)名已經(jīng)指定,請(qǐng)勿修改,直接返回方法規(guī)定的值即可
#
# 
# @param root TreeNode類 
# @param o1 int整型 
# @param o2 int整型 
# @return int整型
#
class Solution:
    def lowestCommonAncestor(self , root: TreeNode, o1: int, o2: int) -> int:
        # write code here
        if root == None:
            return None
        path1 = []
        path2 = []
        self.dfs(root,path1,o1)
        # 這里要注意重置一下標(biāo)志
        self.flag = False
        self.dfs(root,path2,o2)
        # 從兩個(gè)path中查找第一個(gè)相同節(jié)點(diǎn)
        # 注意,如果他們有相同的祖先,那么從前往后的路徑一定是一樣的
        i=0
        res = None
        while i < len(path1) and i<len(path2):
            if path1[i]==path2[i]:
                # 最后一個(gè)相同的節(jié)點(diǎn)就是最近的共同祖先,加一要放在后面
                res = path1[i]
                i+=1
            else:
                break
        return res

        


    flag = False
    def dfs(self,root:TreeNode,path:list,m:int):
        if root == None:
            return
        path.append(root.val)
        # 查找判斷是否有相同節(jié)點(diǎn),找到就可以提前退出了
        # 這里設(shè)置一個(gè)標(biāo)志,用于后面判斷是否要返回路徑
        if root.val==m:
            self.flag = True
            return 
        self.dfs(root.left,path,m)
        self.dfs(root.right,path,m)
        # 如果存在一條這樣的路徑就返回
        if self.flag:
            # 這里可以不用return path 因?yàn)閭魅氲膮?shù)是隨函數(shù)變化的
            return 
        # 否則就彈出,然后從父節(jié)點(diǎn)繼續(xù)尋找
        # 這個(gè)回調(diào)很重要
        path.pop()
        

劍指offer刷題筆記 文章被收錄于專欄

24秋招劍指offer刷題的筆記

全部評(píng)論

相關(guān)推薦

點(diǎn)贊 評(píng)論 收藏
分享
評(píng)論
點(diǎn)贊
收藏
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
??推髽I(yè)服務(wù)