在Python中查找二叉树的路径

时间:2015-11-16 06:17:00

标签: python algorithm python-3.x data-structures tree

假设我有一个矩阵,其中反向(重新组合)下三角形是二叉树,初始节点具有值4(左下),分支到3& 5,具有3分支到2& 4和5分支到4& 6,依此类推。

m = ((0, 0, 6),
     (0, 5, 4),
     (4, 3, 2))

这是视觉表现: enter image description here

如何在此树中找到所有唯一路径作为元组? 当然,对于具有$ n $步骤的树(即$ n + 1 $终端节点),将有$ 2 ^ n $个路径。

[(4,3,2), (4,3,4), (4,5,4), (4,5,6)]

1 个答案:

答案 0 :(得分:1)

您可以: - 对树进行一些遍历,例如BFS或DFS 最简单的方法是递归

procedure Walk(node, route)
  if node = nil then //leaf node is reached
     output(route)
  else   
    Walk(node.left, route + node.name)
    Walk(node.right, route + node.name)

Walk(root, empty)

- 地图编号范围为0..2 n -1,可能的路线为:
如果数字的第i位(左起)是1,则在第i级使用右分支,否则使用左分支。例如,(4,5,4)对应于数字2 =二进制10