Помощь с домашней работой, неверные параметры бинарных деревьев - PullRequest
0 голосов
/ 14 ноября 2011

У меня проблема с домашней работой. Как ни странно, функция treeHeight работает. Это было предусмотрено книгой. Я сделал nodeCount и leavesCount для этого домашнего задания и получу для него эти ошибки сборки, когда тот, который сделал автор, не

Ошибка сборки:

1>  testProgBinarySearchTree.cpp
1>testProgBinarySearchTree.cpp(49): error C2660: 'binaryTreeType<elemType>::nodeCount'     : function does not take 0 arguments
1>          with
1>          [
1>              elemType=int
1>          ]
1>testProgBinarySearchTree.cpp(50): error C2660: 'binaryTreeType<elemType>::leavesCount' : function does not take 0 arguments
1>          with
1>          [
1>              elemType=int
1>          ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Исходный код main:

cout << endl<<"Line 24: Tree Height: "
     << treeRoot.treeHeight() << endl;              //Line 24

cout << endl << "The node count is: " << treeRoot.nodeCount();
cout << endl << "The leaf count is: " << treeRoot.leavesCount();    

Класс:

int height(binaryTreeNode<elemType> *p) const;
  //Function to return the height of the binary tree
  //to which p points. 
int max(int x, int y) const;
  //Returns the larger of x and y.
int nodeCount(binaryTreeNode<elemType> *p) const;
  //Function to return the number of nodes in the binary 
  //tree to which p points 
int leavesCount(binaryTreeNode<elemType> *p) const;
  //Function to return the number of leaves in the binary 
  //tree to which p points 

template <class elemType>
int binaryTreeType<elemType>::height(binaryTreeNode<elemType> *p) const
{
    if (p == NULL)
        return 0;
    else
        return 1 + max(height(p->llink), height(p->rlink));
}

template <class elemType>
int binaryTreeType<elemType>::max(int x, int y) const
{
    if (x >= y)
        return x;
    else
        return y;
}

template <class elemType>
int binaryTreeType<elemType>::nodeCount(binaryTreeNode<elemType> *p) const
{
    if (p == null)
    return 0;
else
    return nodeCount(p->llink) + nodeCount(p->rlink) + 1;
}

template <class elemType>
int binaryTreeType<elemType>::leavesCount(binaryTreeNode<elemType> *p) const
{
    if (p == null)
    return 0;
else
    if ( leavesCount(p->llink) == 0 && leavesCount(p->rlink) == 0)
        return 1;
    else 
        return leavesCount(p->llink) + leavesCount (p->rlink); 
}

ФИГУРА ЕГО СПАСИБО. Другая функция вызывает это с похожими именами, и я пропустил это, исправил и спасибо за помощь

Ответы [ 2 ]

1 голос
/ 14 ноября 2011
int binaryTreeType<elemType>::nodeCount(binaryTreeNode<elemType> *p) const

cout << endl << "The node count is: " << treeRoot.nodeCount();

Ваша ошибка говорит о том, что nodeCount не принимает нулевых аргументов.Из вашей сигнатуры функции вам нужно передать binaryTreeNode<elemType> *p, а способ ее вызова ничего не передает.

Из кода похоже, что вы должны передать корневой узел.

1 голос
/ 14 ноября 2011

Сообщение об ошибке сообщает вам точно в чем проблема; эти функции требуют аргументов. Вы звоните им без аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...