二叉树的创建

采用中序遍历
给一个学妹改的结课作业,很简单的遍历,对数据结构初学者有一些帮助。

我是用visual studio写的,如果是用其他的编译器得把scanf_s改成scanf
最好用devcpp运行,visual studio总是会出现一些莫名其妙的报错
这代码只是实现了二叉树的建立,其他的删改查等操作等下次有空了再更新

#include <stdlib.h>
#include <stdio.h>


typedef struct TreeNode {
	int data;
	struct TreeNode* Lnext, * Rnext;
}*TreePointer;

TreePointer Back(TreePointer &H_TreeNode) {
	printf("Do u want to continue.Enter 1 or 0\n");
	int TempGudegement;
	scanf_s("%d", &TempGudegement);
	if (TempGudegement)
	{
		printf("Now u are the leftchild of the node\n");
		return H_TreeNode->Lnext;
	}
	else
	{
		printf("Now u are at the rightchild of the node\n");
		return H_TreeNode->Rnext;
	}

}

TreePointer CreateTree() {
	TreePointer H_TreeNode = (TreePointer)malloc(sizeof(TreePointer));
	H_TreeNode->Lnext = NULL;
	H_TreeNode->Rnext = NULL;
	printf("Enter a number u want the rootnode have\n");
	scanf_s("%d", &H_TreeNode->data);
	TreePointer Temp_TreeNode = (TreePointer)malloc(sizeof(TreePointer));               //定位指针
	Temp_TreeNode->Lnext = H_TreeNode;
	lbale:
	if (Temp_TreeNode->Lnext->Lnext == NULL)
	{
		printf("Do you want to insert left or right, enter 1 or 0\n");
		int Temp_Gudgement;                                                          
		scanf_s("%d", &Temp_Gudgement);

		if (Temp_Gudgement)
		{
			TreePointer T_TreeNode = (TreePointer)malloc(sizeof(TreePointer));
			T_TreeNode->Lnext = NULL;
			T_TreeNode->Rnext = NULL;
			printf("enter a number u want to insert at here\n");
			scanf_s("%d", &Temp_TreeNode->data);
			Temp_TreeNode->Lnext->Lnext = T_TreeNode;
			Temp_TreeNode->Lnext = T_TreeNode;
		}
		else
		{
			TreePointer T_TreeNode = (TreePointer)malloc(sizeof(TreePointer));
			T_TreeNode->Lnext = NULL;
			T_TreeNode->Rnext = NULL;
			printf("enter a number u want to insert at here\n");
			scanf_s("%d", &Temp_TreeNode->data);
			Temp_TreeNode->Lnext->Rnext = T_TreeNode;
			Temp_TreeNode->Lnext = T_TreeNode;
		}
	}
		printf("Do u want to continue,enter 1 or 0\n");
		int TempGudgement;
		scanf_s("%d", &TempGudgement);
		if (TempGudgement)
		{
			goto lbale;
		}
		else
		{
			printf("Do u want to insert at another position.Enter 1 or 0\n");
			scanf_s("%d", &TempGudgement);
			if (TempGudgement)
			{
				printf("Now u will go to the root node\n");
				Temp_TreeNode = Back(H_TreeNode);
				goto lbale;
			}
		}
		

	free(Temp_TreeNode);
	return H_TreeNode;
}

int main() {
	TreePointer L = CreateTree();
	return 0;
}
1 个赞

为什么不看看vscode配C或者C++呢