给定一棵(n元)树。如何检查它是否是二进制的?

最佳答案

如何检查它是否是二进制的?
检查每个节点是否最多有两个子节点。
一些未经测试的(!)伪代码:

struct NTree {

  root: Node

  boolean isBinary() {
    return isBinary(root)
  }

  private boolean isBinary(Node n) {
    if (n has no child)
      return true
    elif (n has 1 child)
      return isBinary(n.children[0])
    elif (n has 2 children)
      return isBinary(n.children[0]) && isBinary(n.children[1])
    else
      return false
  }

  struct Node {
    children: List
  }
}

10-08 06:39