【发布时间】:2019-04-14 14:28:27
【问题描述】:
感谢您的帮助
背景
我有一个关于在树中定位节点的问题。
我有一个简单的二叉树。每个节点中都有一条数据。假设它看起来像这样:
a
/ \
b c
在哪里a=root、b=root.left、c=root.right
树不是手动创建的。假设我收到一个将 new_data 添加到节点 c 的请求。
我很困惑如何在不明确写 root.right.data=new_data 的情况下知道 c 在哪里。
我的第一个想法是创建某种类型的辅助字典,其中包含对节点位置的引用,例如:
helper = {
'a'= root,
'b'= root.left,
'c'= root.right
}
这样当我收到请求时,我可以去找助手并说一些大意的东西:
helper.get('c').data=new_data
问题
我在这里是正确的吗?递归地反复搜索整棵树似乎有点多 - 当树改变其节点结构时,这个助手可能会偶尔更新。
当我递归爬取树时,我对如何实际返回每个节点的位置感到困惑。如何创建这个助手?
【问题讨论】:
-
你可以看看这个答案:stackoverflow.com/questions/2598437/…
-
为什么仍然需要树?为什么不把你的数据放在字典里,仅此而已?
-
@SchiduLuca 我已经大大简化了这个例子。树提供了父对象和子对象之间的关键链接,它们可以以不同的方式相互作用。树为此提供了一个非常好的结构。我不相信字典会很有成效。
-
@JW2
Recursively searching an entire tree repeatedly seems a bit much。如果您决定以这种形式放置数据,则可以递归遍历。如果您认为这太多了,那就根本不要使用树..
标签: python recursion binary-tree binary-search-tree