Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

C++ Program to Implement Ternary Tree



A ternary tree is a type of tree data structure in which each node can have at most three children. In this article, we will learn how to implement a ternary tree in C++ using basic class structures and pointers.

What is Ternary Tree?

A ternary tree is a tree in which each node has up to three children, that is left, middle, and right. It is same as a binary tree, but with an extra child node for each node. Each node in a ternary tree stores a data value and pointers to its three child nodes.

For example, a node in a ternary tree will be defined by:

struct Node {
    int data;
    Node* left;
    Node* middle;
    Node* right;
};

Implementing Ternary Tree

To implement a ternary tree, we define a class or structure for nodes and use recursive logic for inserting and traversing. Below are some points about its structure and operation:

  • Structure: Each node contains a data value and three pointers for left, middle, and right child.
  • Operations: Insert nodes and perform traversal operation (preorder, inorder, or postorder).

Steps to Implement Ternary Tree in C++

Following are steps/algorithm to implement ternary tree in C++:

  • Create a structure or class for tree nodes.
  • Each node should have three pointers: left, middle, and right.
  • Insert values into the tree using arrow operator (->) for pointers.
  • Use a preorder traversal to display values of tree.
  • Use a main function to create nodes and demonstrate traversal.

C++ Program to Implement Ternary Tree

In the below code, we have implemented a simple ternary tree and traversed it using preorder traversal:

#include <iostream>
using namespace std;

// Define a node of the ternary tree
struct Node {
    int data;
    Node* left;
    Node* middle;
    Node* right;

    Node(int val) {
        data = val;
        left = middle = right = nullptr;
    }
};

// Preorder traversal of ternary tree
void preorder(Node* root) {
    if (root == nullptr)
        return;
    cout << root->data << " ";
    preorder(root->left);
    preorder(root->middle);
    preorder(root->right);
}

int main() {
    // Creating root and child nodes
    Node* root = new Node(1);
    root->left = new Node(2);
    root->middle = new Node(3);
    root->right = new Node(4);
    root->left->left = new Node(5);
    root->middle->middle = new Node(6);
    root->right->right = new Node(7);

    cout << "Preorder Traversal: ";
    preorder(root);

    return 0;
}

The output of above code will be:

Preorder Traversal: 1 2 5 3 6 4 7

Time and Space Complexity

Time Complexity: O(n), where n is the number of nodes in the ternary tree.

Space Complexity: O(h), where h is the height of the tree due to recursion stack.

Updated on: 2025-05-23T11:18:01+05:30

598 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements