树的中序遍历排序

来源:百度知道 编辑: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); //中序遍历

已知二叉树的先根遍历和中序遍历,求后序遍历的算法? 二叉树,前序遍历adbgcefh,中序遍历dgbaechf,求后序遍历?要有解答详细过程 二叉树是什么,二叉树前序遍历.中序遍历.后序遍历又是什么 谁有 C二叉树 中序遍历 的例子? 二叉树的建立及先、中、后序遍历 已知二叉树的后序遍历序列dabec,中序遍历序列是debac,它的前序遍历序列是什么 一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,该二叉树的后序遍历是什么?请给出详细答案.谢 已知二叉树后序遍历序列是dabec,中序遍历序列debac,它的前序遍历的序列是 已知二叉树后序遍历序列是DABEC 中序遍历列是 DEBAC ,它的前序遍历序列是: 二级VF考试中常见题型 二叉树知道前中后遍历中的两个遍历,求另一个遍历的方法