为什么我的功能没有返回计数? (二叉树)

时间:2016-03-12 01:41:59

标签: c++

我的程序中的所有内容都能正常运行,除非它没有显示该字段的计数。我试图更改一些代码但它似乎没有在输出中显示它。这似乎是一个简单的错误或明显的东西,但我不知道它为什么不显示它。有人可以帮忙吗?

#include <iostream>

using namespace std;

template<class T>

class BinaryTree
{
    struct Node
    {
        T data;
        Node* leftChild;
        Node* rightChild;

        Node(T dataNew)
        {
            data = dataNew;
            leftChild= NULL;
            rightChild = NULL;
        }
    };
private:
    Node* root;

    void Add(T new_Data, Node* &the_Root)
    {
        if (the_Root == NULL)
        {
            the_Root = new Node(new_Data);
            return;
        }

        if (new_Data < the_Root->data)
            Add(new_Data, the_Root->leftChild);
        else
            Add(new_Data, the_Root->rightChild);
    }
    int countTree(Node* the_Root)
    {
        if (the_Root == NULL)
            return 0;  
        else {
            int count = 1;  
            count += countTree(the_Root->leftChild);

            count += countTree(the_Root->rightChild);

            return count;  
        }
    } 
    void PrintTree(Node* the_Root)
    {
        if (the_Root != NULL)
        {
            cout << the_Root->data <<" ";
            PrintTree(the_Root->leftChild);
            PrintTree(the_Root->rightChild);
        }
    }

public:
    BinaryTree()
    {
        root = NULL;
    }

    void AddItem(T new_Data)
    {
        Add(new_Data, root);
    }

    int countTree()
    {
        return countTree(root);
    }

    void PrintTree()
    {
        PrintTree(root);
    }
};

int main()
{
    BinaryTree<int> *myBT = new BinaryTree<int>();
    myBT->AddItem(6);
    myBT->AddItem(5);
    myBT->AddItem(4);
    myBT->AddItem(18);
    myBT->AddItem(6);
    myBT->PrintTree();
    myBT->countTree();
}

2 个答案:

答案 0 :(得分:0)

你实际上并没有对myBT->countTree()的结果做任何事情。尝试打印它:

std::cout << myBT->countTree() << std::endl;

答案 1 :(得分:0)

计数不会因为您没有编写任何代码来显示计数而无法显示。

尝试将myBT->countTree();更改为cout << myBT->countTree();,您将看到打印的计数。