好奇是函数爆栈还是二叉树太大了
#include <iostream>
using namespace std;
struct Node
{
int data;
Node* parent;
Node* left;
Node* right;
};
Node* root = NULL;
Node* CreateNode(int data)
{
Node* node = new Node();
if (node == NULL)
return NULL;
node->data = data;
node->parent = NULL;
node->left = NULL;
node->right = NULL;
return node;
}
void InsertNode(int data,Node* temp)
{
Node* newnode = CreateNode(data);
if (newnode == NULL)
return;
if (root == NULL)
root = newnode;
else
{
if (newnode->data < temp->data)
{
if (temp->left == NULL)
{
temp->left = newnode;
temp->left->parent = temp;
return;
}
temp->left->parent = temp;
temp = temp->left;
InsertNode(data,temp);
}
else
{
if (temp->right == NULL)
{
temp->right = newnode;
temp->right->parent = temp;
return;
}
temp->right->parent = temp;
temp = temp->right;
InsertNode(data,temp);
}
}
}
void Visit(Node* p)
{
cout << p->data << ' ';
}
void In(Node* p)
{
if (p != NULL)
{
In(p->left);
Visit(p);
In(p->right);
}
}
int main()
{
int n, tmp;
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> tmp, InsertNode(tmp, root);
In(root);
}