コード例 #1
0
ファイル: evaluator.go プロジェクト: adamdrake/decisiontrees
func validateTree(t *pb.TreeNode) error {
	if isLeaf(t) {
		if t.GetLeft() != nil || t.GetRight() != nil {
			return fmt.Errorf("leaf has non-zero children: %v", t)
		}
		return nil
	}

	// not a leaf - must have both children
	if t.GetLeft() == nil || t.GetRight() == nil {
		return fmt.Errorf("branch has nil children: %v", t.String())
	}

	err := validateTree(t.GetLeft())
	if err != nil {
		return err
	}

	err = validateTree(t.GetRight())
	if err != nil {
		return err
	}
	return nil
}