【问题标题】:An algorithm to operate on a binary tree leaves?对二叉树叶子进行操作的算法?
【发布时间】:2017-11-17 06:44:24
【问题描述】:

我没有系统地学习uni中的数据结构和算法课程(只是看了一些书),想问一下是否有定义明确的算法可以为二叉树做以下工作:

对于给定的二叉树和一个正整数n,搜索它的叶子。如果两个相邻叶子的深度差(假设所有叶子都显示为一个数组,那么两个相邻叶子可能在两个不同的子树中)大于n。细分深度较低的叶子。递归执行此操作,直到不需要细分为止。

下图为演示,为n

由于叶子1的深度比叶子2小2,所以需要对叶子1进行细分:

现在不需要进一步细分了。

【问题讨论】:

    标签: algorithm tree binary-tree


    【解决方案1】:
    1. 初始化P为空
    2. DFS 树的剩余部分,直到你在叶子中 L;如果没有人离开就退出
    3. 比较当前深度DL与前一叶P的深度DP ;如果 P 为空,则转到 [5]
    4. 如果 |DL – DP| ≥N,拆分L(当DLP)或 P(否则)
    5. 考虑 L 新的 P 并转到 [2]

    重复此操作,直到树收敛(即,直到无法执行拆分)。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      相关资源
      最近更新 更多