求助(二叉树中序遍历MLE)
查看原帖
求助(二叉树中序遍历MLE)
1203411
Louis_lxy楼主2024/3/13 18:58

好奇是函数爆栈还是二叉树太大了

#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);
}
2024/3/13 18:58
加载中...