Making grandchild of root null , the right way in C++
This is a very C like approach and you are using C++ so take advantage of that fact.


Get rid of the #define and use nullptr keyword instead.
Name member variables something special such as m_ so Node *m_children[4]; 
Try use C++ data structures instead of arrays and char* so vector&lt;Node*&gt; children.
Make the Node struct into a class and write getters and setters to encapsulate the new vector structure you should use.
Encapsulate the void display(Node *root) function into a class such:

class Tree
{
    Tree(int depth);// create a tree with x depth
    etc...
    void display();
public:
    Node* m_root;
};


You could create some functionality to able to initialise the tree with some custom data structure.
Add the following code in main into the tree class

for (i=0;i&lt;4;i++)
{
    Node *temp=new Node;
    temp-&gt;value=values[i];
    root-&gt;child[i]=temp;
    for (int j=0;j&lt;4;j++)
    {
        root-&gt;child[i]-&gt;child[j]=null;
    }
    std::cout&lt;&lt;"Root value "&lt;&lt;root-&gt;child[i]-&gt;value&lt;&lt;"\n\n ";
}



PS. Sorry if the code doesn't work; I'm at work and have no way to check it!