Mam pytanie jak wypisać wierzchołki drzewa rekurencyjnie? Próbowałem funkcją print, ale niezbyt działa wypisuje tylko dwa lewe wierzchołki
#include <iostream>
using namespace std;
struct node
{
int value;
node *left, *right;
};
node* get_new_node(int value);
node* insert(node* root, int value);
void print (node* root);
int main()
{
node *root=NULL;
root = insert(root,15);
root = insert(root,10);
root = insert(root,20);
root = insert(root,25);
root = insert(root,8);
root = insert(root,12);
print(root);
return 0;
}
node* get_new_node(int value)
{
node *new_node = new node();
new_node->value = value;
new_node->left = new_node->right = NULL;
return new_node;
}
node* insert(node* root, int value)
{
if (root == NULL)
{
root=get_new_node(value);
}
else if(value <= root->value)
{
root->left = insert(root->left, value);
}else
{
root->right = insert(root->right, value);
}
return root;
}
void print (node* root)
{
if(root->left!=NULL)
{
cout<<root->value<<" ";
print(root->left);
}else if(root->right!=NULL)
{
cout<<root->value<<" ";
print(root->right);
}
}
EDIT
Czy może być tak w IN ORDER
void print (node* root)
{
if(root->left!=NULL)
{
print(root->left);
}
cout<<root->value<<" ";
if(root->right!=NULL)
{
print(root->right);
}
}