【问题标题】:Recursively creating a tree with binomial coefficient递归创建具有二项式系数的树
【发布时间】:2021-10-10 22:04:46
【问题描述】:

我正在尝试用整数递归填充树(如下面的链接所示)。但我不明白如何使用递归解决归纳步骤。

PS。我已经创建了递归函数来计算二项式系数

提前谢谢你!

【问题讨论】:

    标签: java recursion tree


    【解决方案1】:

    说明递归步骤的伪代码

    TreeNode getRootOfSomeFancyTree(n)
        TreeNode root = new TreeNode()
        if(n == 1) return root
        else for(i = 0; i < n; i++)
            //not sure of correct way to multiply an integer by a tree in your application
            int x = binomialCoefficient(n, i) * i
            //anyway, recurring is easy and safe provided x < n
            TreeNode subTree = getRootOfSomeFancyTree(x)
            //build the tree
            root.addChild(subTree)
        endfor return root
            
    

    【讨论】:

      【解决方案2】:

      链接图片中的数学符号有点晦涩。但是你想几乎完全实现它。它是这样说的:

      Node buildTree(n) {
        Let tree be a new Node (with no children)
        For i from 0 to n - 1
          Let b = binomial(n, i)
          for b times:
            Add buildTree(i) as a child of tree
        return tree
      }
         
      

      模糊的部分是在这个“树数学”中乘以某个整数 k 意味着“重复图形 k 次”,而求和意味着“将所有作为子节点添加”到隐式父节点。这个父级是表达式的值。

      这里有一个开发提示。在每个节点中存储一个唯一整数作为标签。一旦你开始工作,然后写一个小树行者,打印出 DOT 语言。当我为 n=3 这样做时,我得到了:

      graph {
      0 -- 1
      2 -- 3
      0 -- 2
      4 -- 5
      0 -- 4
      6 -- 7
      0 -- 6
      8 -- 9
      10 -- 11
      8 -- 10
      12 -- 13
      8 -- 12
      0 -- 8
      14 -- 15
      16 -- 17
      14 -- 16
      18 -- 19
      14 -- 18
      0 -- 14
      20 -- 21
      22 -- 23
      20 -- 22
      24 -- 25
      20 -- 24
      0 -- 20
      }
      

      您可以使用在线 GraphViz here 查看它的外观。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-23
        • 2011-05-08
        • 2019-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多