Skip to main content

Trie Search Word Element

Here given code implementation process.

/*
  C++ Program
  Trie Search Word Element
*/
#include <iostream>

#include <string.h>
#define ALPHABETS 26
using namespace std;
class Node {
  public:
    bool end;
    Node *children[ALPHABETS];
    Node() {
      this->end = false;
      for (int i = 0; i < ALPHABETS; ++i) {
        this->children[i] = NULL;
      }
    }
};
class Trie {
 
  public:
    Node *root;
  Trie() {
    this->root = new Node();
  }
  //Search given text is exist in tire
  bool search(string text) {
    int length = text.size();
    int index = 0;
    Node *head = this->root;
    for (int level = 0; level < length; level++) {
      index = text[level] - 'a';
      if (head->children[index] == NULL) {
        return false;
      }
      head = head->children[index];
    }
    if (head != NULL && head->end == true) {
      return true;
    } else {
      return false;
    }
  }

  void insert(string text) {
    int size = text.size();
    int index = 0;
    Node *head = this->root;
    int level = 0;
    while (level < size) {
      index = text[level] - 'a';
      if (head->children[index] == NULL) {
        head->children[index] = new Node();
      }
      head = head->children[index];
      level++;
    }
    if (head != NULL) {
      head->end = true;
    }
  }

};
int main() {
  Trie obj;
  obj.insert("cooky");
  obj.insert("codify");
  obj.insert("data");
  obj.insert("comedy");
  string text = "com";
  if (obj.search(text)) {
    cout << "Exist : " << text << endl;
  } else {
    cout << "Not Exist : " << text << endl;
  }
  text = "data";
  if (obj.search(text)) {
    cout << "Exist : " << text << endl;
  } else {
    cout << "Not Exist : " << text << endl;
  }
}

Output

Not Exist : com
Exist : data
/*
  Java program
  Trie Search Node Text
*/
class Node {
  //Indicates end of string
  public boolean end;

  public Node[] children;

  public Node(int size) {
    end = false;
    children = new Node[size];
  }
}
public class Trie {
  public int ALPHABETS = 26;


  public Node root;

  public Trie() {
    root = new Node(ALPHABETS);
  }
  //Search given text is exist in tire
  public boolean search(String text) {
    //first get the length of text
    int length = text.length();

    //This variable are used to task find the index location of character
    int index = 0;

    //get the root node
    Node head = root;

    for (int level = 0; level < length; level++) {
      //Get the index
      index = text.charAt(level) - 'a';

      if (head.children[index] == null) {
        return false;
      }

      head = head.children[index];
    }
    if (head != null && head.end == true) {
      return true;
    } else {
      return false;
    }
  }
  public void insert(String text) {
    //first get the length of text
    int length = text.length();

    //This variable are used to task find the index location of character
    int index = 0;

    //get the root node
    Node head = root;

    for (int level = 0; level < length; level++) {
      //Get the index
      index = text.charAt(level) - 'a';

      if (head.children[index] == null) {
        //When need to add new Node
        head.children[index] = new Node(ALPHABETS);
      }

      head = head.children[index];
    }
    if (head != null) {
      //indicates end of string
      head.end = true;
    }
  }
  public static void main(String[] args) {
    //Make object
    Trie obj = new Trie();

    obj.insert("cooky");
    obj.insert("codify");
    obj.insert("data");
    obj.insert("comedy");

    String text = "com";

    if (obj.search(text)) {
      System.out.println("Exist : " + text);
    } else {
      System.out.println("Not Exist : " + text);
    }


    text = "data";

    if (obj.search(text)) {
      System.out.println("Exist : " + text);
    } else {
      System.out.println("Not Exist : " + text);
    }
  }
}

Output

Not Exist : com
Exist : data
/*
  C# program
  Trie Search Node Text
*/
using System;
public class Node {
	//Indicates end of string
	public Boolean end;

	public Node[] children;

	public Node(int size) {
		end = false;
		children = new Node[size];
	}
}
public class Trie {
	private int ALPHABETS = 26;


	public Node root;

	public Trie() {
		root = new Node(ALPHABETS);
	}
	//Search given text is exist in tire
	public Boolean search(String text) {
		//first get the.Length of text
		int size = text.Length;

		//This variable are used to task find the index location of character
		int index = 0;

		//get the root node
		Node head = root;

		for (int level = 0; level < size; level++) {
			//Get the index
			index = text[level] - 'a';

			if (head.children[index] == null) {
				return false;
			}

			head = head.children[index];
		}
		if (head != null && head.end == true) {
			return true;
		} else {
			return false;
		}
	}
	public void insert(String text) {
		//first get the.Length of text
		int size = text.Length;

		//This variable are used to task find the index location of character
		int index = 0;

		//get the root node
		Node head = root;

		for (int level = 0; level < size; level++) {
			//Get the index
			index = text[level] - 'a';

			if (head.children[index] == null) {
				//When need to add new Node
				head.children[index] = new Node(ALPHABETS);
			}

			head = head.children[index];
		}
		if (head != null) {
			//indicates end of string
			head.end = true;
		}
	}
	public static void Main(String[] args) {
		//Make object
		Trie obj = new Trie();

		obj.insert("cooky");
		obj.insert("codify");
		obj.insert("data");
		obj.insert("comedy");

		String text = "com";

		if (obj.search(text)) {
			Console.WriteLine("Exist : " + text);
		} else {
			Console.WriteLine("Not Exist : " + text);
		}


		text = "data";

		if (obj.search(text)) {
			Console.WriteLine("Exist : " + text);
		} else {
			Console.WriteLine("Not Exist : " + text);
		}
	}
}

Output

Not Exist : com
Exist : data
#Python3 Program
#Trie Search Node Text
class Node :

  def __init__(self, size) :
    self.end = False
    self.children = [None]*size
  

class Trie :

  def __init__(self) :
    self.ALPHABETS = 26
    self.root = Node(self.ALPHABETS)
    

  def search(self, text) :
    size = len(text)
    index = 0
    head = self.root
    level = 0
    while (level < size) :
      index = ord(text[level]) - ord('a')
      if (head.children[index] == None) :
        return False
      
      head = head.children[index]
      level += 1
    
    if (head != None and head.end == True) :
      return True
    else :
      return False
    
  
  def insert(self, text) :
    size = len(text)
    index = 0
    head = self.root
    level = 0
    while (level < size) :
      index = ord(text[level]) - ord('a')
      if (head.children[index] == None) :
        head.children[index] = Node(self.ALPHABETS)
      
      head = head.children[index]
      level += 1
    
    if (head != None) :
      head.end = True
    
  
def main() :
  obj = Trie()
  obj.insert("cooky")
  obj.insert("codify")
  obj.insert("data")
  obj.insert("comedy")
  text = "com"
  if (obj.search(text)) :
    print("Exist : ", text)
  else :
    print("Not Exist : ", text)
  
  text = "data"
  if (obj.search(text)) :
    print("Exist : ", text)
  else :
    print("Not Exist : ", text)
    
  

if __name__ == "__main__":
  main()

Output

Not Exist : com
Exist : data
#Ruby Program
#Trie Search Node Text
class Node 
	attr_reader :end, :children
	attr_accessor :end, :children
	def initialize(size) 
		@end = false
		@children = Array.new(size){nil}
	end
end

class Trie 
	attr_reader :ALPHABETS, :root
	attr_accessor :ALPHABETS, :root
	def initialize() 
		@ALPHABETS = 26
		@root = Node.new(@ALPHABETS)
	end
	def search(text) 
		size = text.length
		location = 0
		head = @root
		level = 0
		while (level < size) 
			location = text[level].ord-'a'.ord
			if (head.children[location] == nil) 
				return false
			end
			head = head.children[location]
			level += 1
		end
		if (head != nil and head.end == true) 
			return true
		else 
			return false
		end
	end
	def insert(text) 
		size = text.length
		location = 0
		head = @root
		level = 0
		while (level < size) 
			location = text[level].ord-'a'.ord
			if (head.children[location] == nil) 
				head.children[location] = Node.new(@ALPHABETS)
			end
			head = head.children[location]
			level += 1
		end
		if (head != nil) 
			head.end = true
		end
	end
end
def main() 
	obj = Trie.new()
	obj.insert("cooky")
	obj.insert("codify")
	obj.insert("data")
	obj.insert("comedy")
	text = "com"
	if (obj.search(text)) 
		print("Exist  :" + text+"\n")
	else 
		print("Not Exist  :" + text+"\n")
	end
	text = "data"
	if (obj.search(text)) 
		print("Exist  :" + text+"\n")
	else 
		print("Not Exist  :" + text+"\n")
	end
end
main() 

Output

Not Exist : com
Exist : data
<?php
/*
  Php Program
  Trie Search Node Text
*/
class Node {
  public $end;
  public $children =[];

  function __construct($size) {
    $this->end = false;
    $this->children = array_fill(0, $size, null);
  }
}
class Trie {
  private $ALPHABETS = 26;
  public $root;

  function __construct() {
    $this->root = new Node($this->ALPHABETS);
  }
  public  function search($text) {
    $size = strlen($text);
    $index = 0;
    $head = $this->root;
    $level = 0;
    while ($level < $size) {
      $index =  ord($text[$level]) - ord('a');
      if ($head->children[$index] == null) {
        return false;
      }
      $head = $head->children[$index];
      $level++;
    }
    if ($head != null && $head->end == true) {
      return true;
    } else {
      return false;
    }
  }
  public  function insert($text) {
    $size = strlen($text);
    $index = 0;
    $head = $this->root;
    $level = 0;
    while ($level < $size) {
      $index =  ord($text[$level]) - ord('a');
      if ($head->children[$index] == null) {
        $head->children[$index] = new Node($this->ALPHABETS);
      }
      $head = $head->children[$index];
      $level++;
    }
    if ($head != null) {
      $head->end = true;
    }
  }

}

function main() {
  $obj = new Trie();
  $obj->insert("cooky");
  $obj->insert("codify");
  $obj->insert("data");
  $obj->insert("comedy");
  $text = "com";
  if ($obj->search($text)) {
    echo "Exist : ". $text."\n";
  } else {
    echo "Not Exist : ". $text."\n";
  }
  $text = "data";
  if ($obj->search($text)) {
    echo "Exist : ". $text."\n";
  } else {
    echo "Not Exist : ". $text."\n";
  }
}
main();

Output

Not Exist : com
Exist : data
/*
  Node Js Program
  Trie Search Node Text
*/
class Node {
	
	constructor(size) {
		this.end = false;
		this.children = new Array(size).fill(null);
	}
}
class Trie {
	
	constructor() {
		this.ALPHABETS = 26;
		this.root = new Node(this.ALPHABETS);
	}
	search(text) {
		var size = text.length;
		var index = 0;
		var head = this.root;
		var level = 0;
		while (level < size) {
			index = text.charCodeAt(level) - 'a'.charCodeAt(0);
			if (head.children[index] == null) {
				return false;
			}
			head = head.children[index];
			level++;
		}
		if (head != null && head.end == true) {
			return true;
		} else {
			return false;
		}
	}
	insert(text) {
		var size = text.length;
		var index = 0;
		var head = this.root;
		var level = 0;
		while (level < size) {
			index = text.charCodeAt(level) - 'a'.charCodeAt(0);
			if (head.children[index] == null) {
				head.children[index] = new Node(this.ALPHABETS);
			}
			head = head.children[index];
			level++;
		}
		if (head != null) {
			head.end = true;
		}
	}
}
function main() {
	var obj = new Trie();
	obj.insert("cooky");
	obj.insert("codify");
	obj.insert("data");
	obj.insert("comedy");
	var text = "com";
	if (obj.search(text)) {
		console.log("Exist : " + text);
	} else {
		console.log("Not Exist : " + text);
	}
	text = "data";
	if (obj.search(text)) {
		console.log("Exist : " + text);
	} else {
		console.log("Not Exist : " + text);
	}
}
main();

Output

Not Exist : com
Exist : data




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment