33,027
社区成员




typedef struct node{
int data;
struct node *left;
struct node *right;
struct node *parent;
}Node;
Node *FindLeft(Node *p)
{
if(p == NULL)
return NULL;
if(p->left != NULL)
p = p->left;
return p;
}
void incursive(Node *root)
{
Node *p = root;
if(root == NULL)
return;
if(root->left == NULL && root->right == NULL)
printf("%d\n",root->data);
if(p->left == NULL)
{
printf("%d\n",p->data);
p = p->right;
p = FindLeft(p);
}
else{
// printf("Hello1\n");
p = FindLeft(p); //第一次执行到这里的时候p被赋值为p1
}
/*
if(p == NULL)
printf("Fuck\n");
*/
while(p != NULL)//之后执行这里
{
// printf("Hello2!\n");
printf("%d\n",p->data);
if(p->right != NULL)//
incursive(p->right);//p1又右子树,所以执行,但是始终没有更改p的值,导致每次while循环都TRUE,死了就
else
{
printf("%d\n",p->data);
p = p->next;
if(p == root)
break;
}
}
}
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *left;
struct node *right;
struct node *next;
}Node;
Node *FindLeft(Node *p)
{
if(p == NULL)
return NULL;
if(p->left != NULL)
p = p->left;
return p;
}
void incursive(Node *root)
{
Node *p = root;
if(root == NULL)
return;
if(root->left == NULL && root->right == NULL)
printf("%d\n",root->data);
if(p->left == NULL)
{
printf("%d\n",p->data);
p = p->right;
p = FindLeft(p);
}
else{
// printf("Hello1\n");
p = FindLeft(p);
}
/*
if(p == NULL)
printf("Fuck\n");
*/
while(p != NULL)
{
// printf("Hello2!\n");
printf("%d\n",p->data);
if(p->right != NULL)
incursive(p->right);
else
{
printf("%d\n",p->data);
p = p->next;
if(p == root)
break;
}
}
}
int main()
{
Node *p1,*p2,*p3,*p4,*p5,*root;
root = (Node *)malloc(sizeof(Node));
p1 = (Node *)malloc(sizeof(Node));
p2 = (Node *)malloc(sizeof(Node));
p3 = (Node *)malloc(sizeof(Node));
p4 = (Node *)malloc(sizeof(Node));
p5 = (Node *)malloc(sizeof(Node));
root->data = 0;
root->left = p1;
root->right = p2;
root->next = NULL;
p1->data = 1;
p1->left = NULL;
p1->right = p3;
p1->next = root;
p2->data = 2;
p2->left = NULL;
p2->right = NULL;
p2->next = root;
p3->data = 3;
p3->left = p4;
p3->right = p5;
p3->next = p1;
p4->data = 4;
p4->left = NULL;
p4->right = NULL;
p4->next = p3;
p5->data = 5;
p5->left = NULL;
p5->right = NULL;
p5->next = p3;
incursive(root);
free(root);
free(p1);
free(p2);
free(p3);
free(p4);
free(p5);
system("pause");
return 0;
}