【发布时间】:2018-10-11 12:33:15
【问题描述】:
我有一个程序,其中我有一个二叉树,表示为具有两个指针和一个根的结构。然后我想输入 n 个元素(由 br 变量表示)作为树节点的值。然后我使用add(param1,...) 函数输入这些元素。但是,当我按回车键时,在我输入所有这些后,程序就会崩溃。我想问一下为什么会这样?
// TreeGraph.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
struct elem {
char key;
elem *left, *right;
} *root = NULL;
void add(int n, elem * &t);
int num,br,i;
int main()
{
cout << "Въведете брой елементи\n";
cin >> br;
cout << "Въведете стойнсотите на листата на дървото\n";
while (i != br) {
cin >> num;
add(num, root);
i++;
}
return 0;
}
void add(int n, elem * &t) {
if (t) {
t = new elem;
t->key = n;
t->left = t->right = NULL;
}
else {
if (t->key < n)
add(n, t->right);
else
add(n, t->left);
}
}
【问题讨论】:
-
@Asesh •
i是一个全局变量,因此它被初始化为零。 -
另一个与问题无关的问题是 elem 有
char key,但 add 使用的是int n。可能应该将 elem 更改为int key。
标签: c++ pointers binary-tree add