【问题标题】:finding depth of node in a binary tree not BST在二叉树中查找节点的深度而不是 BST
【发布时间】:2011-11-24 18:08:33
【问题描述】:

我有一棵二叉树而不是 bst,我需要在二叉树中找到一个节点的深度 除了使用一些dilimeter来实现level order traversal之外还有其他方法可以实现level的计数。

作为输入,我有树的根节点和我需要找到深度的树的节点之一。

我想有一些递归的方法来找到这个

【问题讨论】:

    标签: java algorithm data-structures tree


    【解决方案1】:

    如果您不想执行 BFS,您可以执行 DFS(您也可以递归执行)。

    【讨论】:

    • 由于您的问题似乎是一个家庭作业问题,我强烈建议您查看您最喜欢的搜索引擎 DFS 的工作原理。
    • 由于树不是 BST,最坏的复杂度将是 O(n)。因此,任何类型的遍历(pre-、post-、in-)都可以帮助您将当前节点与输入节点进行比较。所有这些遍历都使用递归。
    【解决方案2】:

    DFS 函数的伪代码,第一次调用将是DFS(root)

    DFS(node v, integer d)
      visited[v] = true
      depth[v] = d
    
      for each u such that u is adjacent to v
        if visited[u] == false
          DFS(u, d+1)
    

    【讨论】:

    • 你不需要visited(非循环)和depth变量(因为你只需要一个值,不需要遍历每个节点)。
    【解决方案3】:

    尝试在递归函数中传递一个附加参数来指示深度。

    【讨论】:

    • 不需要额外的参数,你可以简单地使用你的函数的返回值。
    猜你喜欢
    • 1970-01-01
    • 2020-07-19
    • 2012-10-12
    • 2020-10-24
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多