【问题标题】:Difficulty printing data in my binary tree in print method在打印方法中我的二叉树中难以打印数据
【发布时间】:2019-11-16 04:03:31
【问题描述】:

我正在尝试将数据添加到二叉树中,但是当我运行一个按顺序打印二叉树数据的方法时,没有打印任何内容,并且程序在应该打印时退出。我已经对其进行了测试,以查看是否实际上是通过让 rootNode 的名称和权重值在每次调用它时在 add 方法中打印自己来添加数据的,但是我无法在 inOrder 方法中得到相同的结果。我相信我的问题与正在传递的节点有关。

#include <iostream>
using namespace std;

struct node {
    int weight;
    string name;

    node *left, *right;
};

struct node* newNode(int dataw, string datan)
{
    struct node* node = (struct node*)malloc(sizeof(struct node));
    node->weight = dataw;
    node->name = datan;

    node->left = NULL;
    node->right = NULL;
    return (node);
}



void add(node *rootNode, int dataw, string datan)
{
    int lowest_weight;
    if (rootNode == NULL )
    {
        rootNode = newNode(dataw,datan);
        lowest_weight = dataw;
    }
    else
    {
        if (datan < rootNode->name)
        {
            if (rootNode->left == NULL)
            {
                rootNode->left = newNode(dataw,datan);
            }
            else
            {
                add(rootNode->left,dataw,datan);
            }
        }
        else
        {
            if (rootNode->right == NULL)
            {
                rootNode->right = newNode(dataw,datan);
            }
            else
            {
                add(rootNode->right, dataw, datan);
            }
        }
    }
}

void inOrder(node *next)
{
    if (next!=NULL)
    {
        inOrder(next->left);
        cout << next->name << " " << next->weight << endl;
        inOrder(next->right);
    }
}


int main()
{
    node *rootNode = NULL;
    int height {}, leaves {}, weight {};
    string name;

    do
    {
        cout << "Enter name: ";
        cin >> name;
        if (name == "-1")
            break;

        cout << "Enter weight: ";
        cin >> weight;

        add(rootNode, weight, name);

    } while (name!="-1");

    inOrder(rootNode);
    return 0;
}

【问题讨论】:

    标签: c++ data-structures binary-tree


    【解决方案1】:

    已解决,必须将 rootNode 声明分配给新的节点方法调用,因此数据并不总是 NULL

    node *rootNode = newNode(weight,name);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      相关资源
      最近更新 更多