检查树是否为二进制

Raj*_*esh 2 algorithm tree data-structures

给定一个(n-ary)树.如何检查它是否是二进制?

Bar*_*ers 6

如何检查它是否是二进制?

检查每个节点最多是否有2个子节点.

一些未经测试的(!)伪代码:

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
  }
}
Run Code Online (Sandbox Code Playgroud)