Skip to content

TreesArray.cpp

#include <stdio.h>
#define MAX 100

int tree[MAX];
int size = 0;

// Insert Into Array Tree
void insert(int value)
{
    if (size >= MAX)
    {
        printf("Tree is full!\n");
        return;
    }
    tree[size++] = value;
}

// Print Tree In Level Order
void printTree()
{
    printf("Tree: ");
    for (int i = 0; i < size; i++)
    {
        printf("%d ", tree[i]);
    }
    printf("\n");
}

// Get Parent Index
int getParentIndex(int index)
{
    if (index == 0)
        return -1;

    return (index - 1) / 2;
}

// Get Left Child Index
int getLeftChildIndex(int index)
{
    return 2 * index + 1;
}

// Get Right Child Index
int getRightChildIndex(int index)
{
    return 2 * index + 2;
}

// Get Parent Value
int getParentValue(int index)
{
    int parentIndex = getParentIndex(index);
    if (parentIndex == -1)
        return -1;

    return tree[parentIndex];
}

// Get Left Child Value
int getLeftChildValue(int index)
{
    int leftChildIndex = getLeftChildIndex(index);
    if (leftChildIndex >= size)
        return -1;

    return tree[leftChildIndex];
}

// Get Right Child Value
int getRightChildValue(int index)
{
    int rightChildIndex = getRightChildIndex(index);
    if (rightChildIndex >= size)
        return -1;

    return tree[rightChildIndex];
}

// Get Value At Index
int getValueAtIndex(int index)
{
    if (index < 0 || index >= size)
        return -1;

    return tree[index];
}

// Get Size Of Tree
int getHeight()
{
    return size;
}

// Check If Tree Is Empty
int isEmpty()
{
    return size == 0;
}

int main()
{
    printf("*** Array Tree ***\n\n");
    insert(10);
    insert(20);
    insert(30);
    insert(40);
    insert(50);

    printTree();

    int index = 2;
    printf("Parent Of %d : %d\n", tree[index], getParentValue(index));
    printf("Left Child Of %d : %d\n", tree[index], getLeftChildValue(index));
    printf("Right Child Of %d : %d\n\n", tree[index], getRightChildValue(index));

    printf("Value At Index 3 : %d\n", getValueAtIndex(3));
    printf("Height Of Tree : %d\n\n", getHeight());

    printf("Is Tree Empty ? %s\n", isEmpty() ? "Yes" : "No");
    return 0;
}