【发布时间】:2023-03-12 11:17:01
【问题描述】:
我最近正在研究以下问题here。基本上,你得到一棵二叉树,需要找到具有最多不同值的路径。上面的链接鼓励使用散列,但我不确定散列在这种情况下会有什么帮助。文章中声明如下:
一个简单的解决方案是探索所有从根到叶的路径。在每一个根 到叶路径,计算不同的节点,最后返回最大值 数。
一个有效的解决方案是使用散列。我们递归遍历 树并维护从根到当前路径上不同节点的计数 节点。我们递归左子树和右子树,最后返回最大值 两个值。
我不确定哈希方法在这种情况下如何更好地工作(我很难看到,因为我不懂 c++)。谁能帮我将散列方法翻译成python?我在这里设置了一棵树:
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++ recursion binary-tree