树的中序遍历排序
来源:百度知道 编辑:UC知道 时间:2024/06/04 12:17:39
#include <stdio.h>
#include <stdlib.h>
typedef struct nameval nameval;
struct nameval /*树结构*/
{
int value;
nameval *left;
nameval *right;
};
nameval *insert(nameval *treep, nameval *newp)
{
if (treep == NULL)
return newp;
if (newp->value < treep->value)
treep->left = insert(treep->left, newp);
else if (newp->value > treep->value)
treep->right = insert(treep->right, newp);
return treep;
}
void inorder(nameval *treep)
{
if (treep == NULL)
return;
treep = treep->left;
printf("%d\n", treep->value);
treep = treep->right;
}
int main()
{
nameval *treep, *newp;
int i;
int a[10] = {2, 8, 1, 10, 9, 7, 6, 3, 5, 4};
treep = (nameval *)malloc(sizeof(nameval));
t
treep = (nameval *)malloc(sizeof(nameval));
treep = NULL;
不可以这样赋值 应为以刚给他地址 比如说00001这个地址 你又给他赋空值
他不又变成 00000了码
treep = (nameval *)malloc(sizeof(nameval));
treep->left = NULL;
treep->right = NULL;这样才对
#include<stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct nameval nameval;
struct nameval /*树结构*/
{
int value;
nameval *left;
nameval *right;
};
nameval *insert(nameval *treep, nameval *newp)
{
if (treep == NULL)
return newp;
if (newp->value < treep->value)
treep->left = insert(treep->left, newp);// 如果没赋初始值 这地方将出错 因为treep->left不确定
else if (newp->value > treep->value)
treep->right = insert(treep->right, newp);
return treep;
}
void inorder(nameval *treep)
{
if (treep == NULL)
return;
inorder(treep->left); //中序遍历