view paper/src/tree.h @ 16:958634b9fa32

make paper directory
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Wed, 17 Feb 2016 16:59:46 +0900
parents src/tree.h@2d6755608f67
children
line wrap: on
line source

// Code Gear Name
enum Code {
    PutTree,
    Replace,
    Insert,
    Compare,
    RotateL,
    RotateR,
    SetTree,
    InsertCase1,
    InsertCase2,
    InsertCase3,
    InsertCase4,
    InsertCase4_1,
    InsertCase4_2,
    InsertCase5,
    StackClear,
    Get,
    Search,
};

// Compare Result
enum Relational {
    EQ,
    GT,
    LT,
};

// Unique Data Gear
enum UniqueData {
    Tree,
    Traverse,
    Node,
};

// Context definication
struct Context {
    stack_ptr node_stack;
};

// Red-Black Tree definication
union Data {
    // size: 8 byte
    struct Tree {
        struct Node* root;
    } tree;
    // size: 12 byte
    struct Traverse {
        struct Node* current;
        int result;
    } traverse;
    // size: 32 byte
    struct Node {
        int key;
        union Data* value;
        struct Node* left;
        struct Node* right;
        enum Color {
            Red,
            Black,
        } color;
    } node;
};