Python 具有最大不同节点的根到叶路径
我最近正在研究以下问题。基本上,您会得到一个二叉树,需要找到具有最多不同值的路径。上面的链接鼓励使用散列,但我不确定散列在这种情况下会有什么帮助。该条规定如下: 一个简单的解决方案是探索所有根到叶的路径。根深柢固 要创建叶路径,请计数不同的节点,最后返回最大值 伯爵 一个有效的解决方案是使用哈希。我们递归地遍历 树并维护从根到当前路径上不同节点的计数 节点。我们重复左、右子树,最后返回最大值 有两种价值 我不确定散列方法在这种情况下如何更好地工作(因为我不懂c++,所以我很难看到)。有人能帮我把散列方法翻译成python吗?我在这里设置了一个树:Python 具有最大不同节点的根到叶路径,python,c++,recursion,binary-tree,Python,C++,Recursion,Binary Tree,我最近正在研究以下问题。基本上,您会得到一个二叉树,需要找到具有最多不同值的路径。上面的链接鼓励使用散列,但我不确定散列在这种情况下会有什么帮助。该条规定如下: 一个简单的解决方案是探索所有根到叶的路径。根深柢固 要创建叶路径,请计数不同的节点,最后返回最大值 伯爵 一个有效的解决方案是使用哈希。我们递归地遍历 树并维护从根到当前路径上不同节点的计数 节点。我们重复左、右子树,最后返回最大值 有两种价值 我不确定散列方法在这种情况下如何更好地工作(因为我不懂c++,所以我很难看到)。有人能帮我把
class TreeNode(object):
def __init__(self, value):
self.val = value
self.left = None
self.right = None
root = TreeNode('A')
second = TreeNode('Z')
root.left = second
third = TreeNode('D')
second.left = third
fourth = TreeNode('A')
third.left = fourth
tenth = TreeNode('A')
third.right = tenth
fifth = TreeNode('A')
root.right = fifth
sixth = TreeNode('U')
fifth.left = sixth
seventh = TreeNode('Z')
fifth.right = seventh
eighth = TreeNode('Y')
seventh.right = eighth
nineth = TreeNode('B')
seventh.right = nineth
看起来像
A
/ \
Z A
/ / \
D U Z
/ \ \
A A Y
感谢您的帮助。谢谢。我不想在这里键入确切的python答案,因为这样对您的学习过程更好,但我可以给您一个提示。首先,您的构造函数看起来是正确的。无序的映射对象类似于字典。对于C++,可能需要无序的映射对象,但是字典对Python没有帮助。最好递归地获取每个分支的最大深度,只计算尚未遇到标签的分支。为了跟踪以前看到过哪些标签,我会使用列表或字典,检查每个叶子的成员资格。希望这对你有用。这很公平。我不明白的是字典有什么帮助?当这个函数开始运行时,它看起来如何?我理解一个简单的解决方案,即为每个路径创建一个带有节点值的列表,计算长度,然后取所有这些路径的最大值。另一方面,hash/dictionary方法没有意义,因为我觉得它没有区分不同的路径/分支(根到叶)。