예제 #1
0
int rankNode(Node* x, int key)
{
    if(x == NULL) return 0;

    if(key < x->key) return rankNode(x->left, key);
    else if(key > x->key) return 1 + sizeNode(x->left) + rankNode(x->right, key);
    else return sizeNode(x);
}
예제 #2
0
static Node* putNode(Node* x, int key, int value)
{
    if(x == NULL) { 
        x = (Node *) malloc(sizeof(Node));
        x->key = key;
        x->value = value;
        x->count = 1;
        
        return x;
    }

    if(key < x->key) x->left = putNode(x->left, key, value);
    else if(key > x->key) x->right= putNode(x->right, key, value);
    else x->value = value;

   x->count = 1 + sizeNode(x->left) + sizeNode(x->right);

   return x;
}
//my thought on this:  no need to sort the original linked list
//simply sort the int array, create a new linkedlist then return the new linkedlist
//if we use malloc, rememer to free
void sortNode (Node *head)
{
	int size = sizeNode(head);

	int dataArray [size];

	Node * current = head;

	int i = 0;

	while(current != NULL)
	{
		dataArray [i] = (*current).val;
		current = (*current).next;
		i++;
	}
}
예제 #4
0
int sizeTree()
{
    return sizeNode(root);
}