Так что я написал этот маленький мир кода как на практику для себя ...прохождений через Древо .. В проблеме порядка с нарушением доступа к памяти
Но я получаю в функции travers_inorder в строке * traverse_inorder (p- > left) * Нарушение доступа к памяти и сбоев программы. Почему ??? Любые идеи?
UPDATE: Я использую Visual Studio 2008 SP1 Visual C++ компилятор
#include <iostream>
#include <time.h>
using namespace std;
struct tree_node
{
tree_node *left;
tree_node *right;
int value;
};
void populate_rnd_tree(tree_node *root, int cnt);
void traverse_inorder(tree_node *p);
int main()
{
srand(time(NULL));
tree_node * nTmp = new tree_node;
populate_rnd_tree(nTmp, 10);
traverse_inorder(nTmp);
return 1;
}
void populate_rnd_tree(tree_node *root, int cnt)
{
tree_node *old = root, *left, *right;
left = new tree_node;
right = new tree_node;
int val = 0;
// exit condition
if (cnt == 0) return;
val = rand()%50;
old->value = val;
old->left = left;
old->right = right;
populate_rnd_tree(left, cnt-1);
populate_rnd_tree(right, cnt-1);
return;
}
void traverse_inorder(tree_node *p)
{
if (p != NULL)
{
traverse_inorder(p->left);
cout << p->value << endl;
traverse_inorder(p->right);
}
}
Вот это ... спасибо! – grobartn
@grobartn - без проблем. рад помочь. – James
в C++, либо используйте '0', либо' nullptr' (C++ 0x) для инициализации указателей. 'NULL' - это C-макрос, который может быть непригоден (в зависимости от его определения), потому что C++ имеет более сильную типизацию .... Если я правильно помню. –