采用中序遍历
给一个学妹改的结课作业,很简单的遍历,对数据结构初学者有一些帮助。
我是用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;
}