打印二叉树的所有路径

时间:2019-07-03 01:18:15

标签: python memory

给出一个完整的二叉树(每个节点有1个左子节点和1个右子节点),编写一种算法以打印所有根到叶路径。

这是Python中的递归算法:

def print_tree(root):
  dfs(root, '')

def dfs(root, path):
  path += root.value
  if not root.right and not root.left:
     print path
     return
  if root.left:    
     dfs(root.left,path)
  if root.right:
     dfs(root.right,path)

对空间复杂度的粗略分析是: 堆栈帧上的O(log(N))(最大可调用次数为树的深度) O(log(N))在堆上(最大字符串构造数也是树的深度,给定路径是在python中不可变的字符串)。

更难的问题是:描述叶节点上的总内存使用情况。

因此,在叶节点处,我们将在调用堆栈上具有函数指针的log(N)。但是path存在多少个“副本”或内存分配?我认为还有log(N)这样的副本,因为直到每个调用函数都返回之前,路径才被垃圾回收。

因此,在叶节点处,我们有总内存复杂度的log(N)+ log(N)。准确吗?

0 个答案:

没有答案