我正在研究这个问题(https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/),并尝试通过python中的回溯来解决它,这是我的逻辑:
这是我的代码:
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, p, 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, path, p, q)
self.traverse(node.right, path, p, q)
path.remove(node.val)
似乎回溯部分不起作用,也没有给我通往两个节点的路径。有人可以帮我解决如何解决此问题吗?我知道此解决方案不是解决此问题的最佳方法,但我想知道代码中的逻辑思想出了什么问题。预先感谢!