i fixed all the sintax errors but i get
an error of accssesing null memory
why?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define false 0
#define true 1
typedef struct TreeNode
{
struct TreeNode *father;
struct TreeNode *left;
struct TreeNode *right;
double val;
}TreeNode;
TreeNode * maxson(TreeNode * root);
void swap(TreeNode * root,TreeNode * node);
double deletemax(TreeNode **heap,TreeNode *leaf);
TreeNode * maxson(TreeNode * root);
void arrange(TreeNode ** root);
int main()
{
TreeNode* root;
double t;
root=(TreeNode*)malloc(sizeof(TreeNode));
root->val=9;
root->right=(TreeNode*)malloc(sizeof(TreeNode));
root->right->val=4;
root->right->left=NULL;
root->right->right=NULL;
root->right->father=root;
root->left=(TreeNode*)malloc(sizeof(TreeNode));
root->left->val=8;
root->left->left=(TreeNode*)malloc(sizeof(TreeNode));
root->left->left->val=7;
root->left->right=(TreeNode*)malloc(sizeof(TreeNode));
root->left->right->val=6;
root->left->right->father=root->left;
root->left->left->father=root->left;
root->left->right->right=NULL;
root->left->right->left=NULL;
root->left->left->right=NULL;
root->left->left->left=NULL;
t=deletemax(&root,root->left->right);
return 0;
}
double deletemax(TreeNode **heap,TreeNode *leaf)//i have to use this signature
{
double temp=(*heap)->val;
swap(*heap,leaf);
free(leaf);
arrange(heap);
return temp;
}
void swap(TreeNode * root,TreeNode * node)
{
double temp;
temp=root->val;
root->val=node->val;
root->val=temp;
}
TreeNode * maxson(TreeNode * root)
{
if (root->left>root->right)
{
return root->left;
}
else
{
return root->right;
}
}
void arrange(TreeNode ** root)
{
TreeNode* temp;
temp=maxson(*root);
if (((*root)->left==NULL)&&((*root)->right==NULL))
{
return;
}
if (temp->val>(*root)->val)
{
swap(*root,temp);
}
arrange(&((*root)->left));
arrange(&((*root)->right));
}