【发布时间】:2019-07-08 06:02:36
【问题描述】:
我在 Python 中以字典的形式创建了一个二叉树,其中每个条目的格式为 key: value。例如,
btree = {...,
node1: [value, nodeNoOfLeftChild, nodeNoOfRightChild],
... }
所有节点都具有相同格式的条目,但也可能缺少一些节点。
例如,如果节点号 5 的值为 X,子节点号是 12 和 13,则条目看起来像。
tree[5] = [X, 12, 13]
但可能节点 13 不存在,因此节点 5 只有一个子节点。 也有可能节点 12 和 13 都不存在,这使得节点 5 成为叶节点。
我想将树的所有分支(从根到叶)作为列表获取,但问题是列表长度因分支而异。
我如何创建一个函数来接收这本字典并给出列表?
【问题讨论】:
-
您只获得了 3 个节点的示例。如果有超过 2 个级别怎么办?您可能还想查看 BST 的预购遍历。
-
我已经举例说明了我是如何存储树的每个节点的。
-
子节点及其子节点等会有类似的条目
-
给定节点 5 没有任何子节点,那么它在二叉树中的列表是否真的有其他条目而不是它的值?
-
通常不使用映射来创建二叉树。相反,您使用一个固定的结构,通常是一个 Node 类来执行此操作。您可以使用一个简单的数组,就像您展示的那样,但没有理由将节点放在地图中。相反,您的子条目应该只是对其他节点的引用,或者如果特定插槽中没有子节点,则为 None。 - 你在说什么会起作用。您只需要很好地定义如何解释地图中的数组中可能包含哪些值。
标签: python binary-tree traversal