如何解决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 举报,一经查实,本站将立刻删除。