LeetCode 236.二叉树的最低共同祖先-回溯解决方案-Python

问题描述

我正在研究这个问题(https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/),并尝试通过python中的回溯来解决它,这是我的逻辑:

  • 遍历树并找到两个节点
  • 返回其路径,然后找到出现在其中的第一个元素 都是路径,这就是LCA

这是我的代码:

class Solution:
    def lowestCommonAncestor(self,root: 'TreeNode',p: 'TreeNode',q: 'TreeNode') -> 'TreeNode':
        self.path_1 = []
        self.path_2 = []
        
        self.traverse(root,[],p,q)
        
        print(self.path_1,self.path_2)
        
        for val in self.path_1:
            if val in self.path_2:
                return val
        
    def traverse(self,node,path,q):
        if not node:
            return
        
        path.append(node.val)
        
        if node is p:
            self.path_1 = path
        
        if node is q:
            self.path_2 = path
        
        self.traverse(node.left,q)
        self.traverse(node.right,q)
        path.remove(node.val)

似乎回溯部分不起作用,也没有给我通往两个节点的路径。有人可以帮我解决如何解决此问题吗?我知道此解决方案不是解决此问题的最佳方法,但我想知道代码中的逻辑思想出了什么问题。预先感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...