Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Trie | (Display Content)

  • Difficulty Level : Medium
  • Last Updated : 16 Oct, 2019

Trie is an efficient information retrieval data structure. In our previous post on trie we have discussed about basics of trie and how to insert and search a key in trie. In this post we will discuss about displaying all of the content of a trie. That is, to display all of the keys present in the Trie.


Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Input: If Trie is      root
                    /   \    \
                    t   a     b
                    |   |     |
                    h   n     y
                    |   |  \  |
                    e   s  y  e
                 /  |   |
                 i  r   w
                 |  |   |
                 r  e   e
Output: Contents of Trie:

The idea to do this is to start traversing from the root node of trie, whenever we find a NON-NULL child node, we add parent key of child node in the “string str” at the current index(level) and then recursively call the same process for the child node and same goes on till we find the node which is a leafnode, which actually marks the end of the string.
Below is the C++ implementation of above idea:

// CPP program to display content of Trie
#include <iostream>
#include <string.h>
#define alpha_size 26
#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
using namespace std;
// Trie node
struct TrieNode 
    struct TrieNode* children[alpha_size];
    bool isLeaf;
// Returns new trie node (initialized to NULLs)
struct TrieNode* createNode()
    struct TrieNode* pNode = new TrieNode;
    for (int i = 0; i < alpha_size; i++)
        pNode->children[i] = NULL;
    pNode->isLeaf = false;
    return pNode;
// function to insert a node in Trie
void insert_node(struct TrieNode* root, char* key)
    int level;
    int length = strlen(key);
    struct TrieNode* pCrawl = root;
    for (level = 0; level < length; level++) 
        int index = key[level] - 'a';
        if (pCrawl->children[index] == NULL)
            pCrawl->children[index] = createNode();
        pCrawl = pCrawl->children[index];
    pCrawl->isLeaf = true;
// function to check if current node is leaf node or not
bool isLeafNode(struct TrieNode* root)
    return root->isLeaf != false;
// function to display the content of Trie
void display(struct TrieNode* root, char str[], int level)
    // If node is leaf node, it indicates end
    // of string, so a null character is added
    // and string is displayed
    if (isLeafNode(root)) 
        str[level] = '\0';
        cout << str << endl;
    int i;
    for (i = 0; i < alpha_size; i++) 
        // if NON NULL child is found
        // add parent key to str and
        // call the display function recursively
        // for child node
        if (root->children[i]) 
            str[level] = i + 'a';
            display(root->children[i], str, level + 1);
// Driver program to test above functions
int main()
    // Keys to be inserted in Trie
    char keys[][8] = { "the", "a", "there", "answer",
                       "any", "by", "bye", "their" };
    struct TrieNode* root = createNode();
    // Inserting keys in Trie
    for (int j = 0; j < ARRAY_SIZE(keys); j++)
        insert_node(root, keys[j]);
    int level = 0;
    char str[20];
    // Displaying content of Trie
    cout << "Content of Trie: " << endl;
    display(root, str, level);


Content of Trie:

NOTE: The above algorithm displays the content of Trie in Lexographically Sorted order.

Some useful applications of Trie are:

This article is contributed by Yash Singla. If you like GeeksforGeeks and would like to contribute, you can also write an article using or mail your article to See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!