mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-07-11 14:36:12 +08:00
Documentation for 341ed50da8
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.1"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.2"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Algorithms_in_C++: Trie Class Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -17,9 +17,9 @@
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="../../search/search.js"></script>
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
|
||||
@@ -32,8 +32,7 @@
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">Algorithms_in_C++
|
||||
 <span id="projectnumber">1.0.0</span>
|
||||
<div id="projectname">Algorithms_in_C++<span id="projectnumber"> 1.0.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">Set of algorithms implemented in C++.</div>
|
||||
</td>
|
||||
@@ -42,21 +41,22 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.1 -->
|
||||
<!-- Generated by Doxygen 1.9.2 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
@@ -70,7 +70,7 @@ $(function() {
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('dd/d2f/class_trie.html','../../'); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
@@ -98,62 +98,82 @@ $(document).ready(function(){initNavTree('dd/d2f/class_trie.html','../../'); ini
|
||||
<a href="#pri-attribs">Private Attributes</a> |
|
||||
<a href="#pri-static-attribs">Static Private Attributes</a> |
|
||||
<a href="../../de/d8a/class_trie-members.html">List of all members</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">Trie Class Reference</div> </div>
|
||||
<div class="headertitle"><div class="title">Trie Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="dynheader">
|
||||
Collaboration diagram for Trie:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d8/d61/class_trie__coll__graph.svg" width="155" height="142"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
||||
</div>
|
||||
<center><span class="legend">[<a target="top" href="../../graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a6af57e9f25d0d0a2d59eea5a4a802908"><td class="memItemLeft" align="right" valign="top"><a id="a6af57e9f25d0d0a2d59eea5a4a802908"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#a6af57e9f25d0d0a2d59eea5a4a802908">Trie</a> ()</td></tr>
|
||||
<tr class="memdesc:a6af57e9f25d0d0a2d59eea5a4a802908"><td class="mdescLeft"> </td><td class="mdescRight">constructor to initialise the root of the trie. <br /></td></tr>
|
||||
<tr class="memitem:a6af57e9f25d0d0a2d59eea5a4a802908"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#a6af57e9f25d0d0a2d59eea5a4a802908">Trie</a> ()</td></tr>
|
||||
<tr class="memdesc:a6af57e9f25d0d0a2d59eea5a4a802908"><td class="mdescLeft"> </td><td class="mdescRight">constructor to initialise the root of the trie. <a href="../../dd/d2f/class_trie.html#a6af57e9f25d0d0a2d59eea5a4a802908">More...</a><br /></td></tr>
|
||||
<tr class="separator:a6af57e9f25d0d0a2d59eea5a4a802908"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afd8b79959009b554e98ea7128b2886f2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#afd8b79959009b554e98ea7128b2886f2">insert</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &word)</td></tr>
|
||||
<tr class="separator:afd8b79959009b554e98ea7128b2886f2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a411e77126930a0942dd7b65e96b15206"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#a411e77126930a0942dd7b65e96b15206">search</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &word)</td></tr>
|
||||
<tr class="separator:a411e77126930a0942dd7b65e96b15206"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a734a08b52b8ad73bdd1f36ae8348056e"><td class="memItemLeft" align="right" valign="top"><a id="a734a08b52b8ad73bdd1f36ae8348056e"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><b>removeWord</b> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &word)</td></tr>
|
||||
<tr class="memitem:a734a08b52b8ad73bdd1f36ae8348056e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#a734a08b52b8ad73bdd1f36ae8348056e">removeWord</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &word)</td></tr>
|
||||
<tr class="separator:a734a08b52b8ad73bdd1f36ae8348056e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
|
||||
Private Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a95216ffc56cb9f8cede982cecb872af4"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>< <a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#a95216ffc56cb9f8cede982cecb872af4">removeWordHelper</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &word, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>< <a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a> > curr, size_t index)</td></tr>
|
||||
<tr class="separator:a95216ffc56cb9f8cede982cecb872af4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a26941759ecf94d67a27d4a610bc0f63d"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>< <a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#a26941759ecf94d67a27d4a610bc0f63d">removeWordHelper</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &word, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>< <a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a> > curr, size_t index)</td></tr>
|
||||
<tr class="separator:a26941759ecf94d67a27d4a610bc0f63d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-static-methods" name="pri-static-methods"></a>
|
||||
Static Private Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a6d10eb1669453395d1900ebd401954fb"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2f/class_trie.html#a6d10eb1669453395d1900ebd401954fb">hasChildren</a> (<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>< <a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a> > <a class="el" href="../../d5/da1/structnode.html">node</a>)</td></tr>
|
||||
<tr class="separator:a6d10eb1669453395d1900ebd401954fb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
|
||||
Private Attributes</h2></td></tr>
|
||||
<tr class="memitem:a58b359fad33ca0064bd75a0d41a7b66d"><td class="memItemLeft" align="right" valign="top"><a id="a58b359fad33ca0064bd75a0d41a7b66d"></a>
|
||||
<tr class="memitem:a58b359fad33ca0064bd75a0d41a7b66d"><td class="memItemLeft" align="right" valign="top"><a id="a58b359fad33ca0064bd75a0d41a7b66d" name="a58b359fad33ca0064bd75a0d41a7b66d"></a>
|
||||
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>< <a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a> > </td><td class="memItemRight" valign="bottom"><b>m_root</b></td></tr>
|
||||
<tr class="separator:a58b359fad33ca0064bd75a0d41a7b66d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-static-attribs" name="pri-static-attribs"></a>
|
||||
Static Private Attributes</h2></td></tr>
|
||||
<tr class="memitem:a7c3ba4caf24378826a789848629177bd"><td class="memItemLeft" align="right" valign="top"><a id="a7c3ba4caf24378826a789848629177bd"></a>
|
||||
<tr class="memitem:a7c3ba4caf24378826a789848629177bd"><td class="memItemLeft" align="right" valign="top"><a id="a7c3ba4caf24378826a789848629177bd" name="a7c3ba4caf24378826a789848629177bd"></a>
|
||||
static constexpr size_t </td><td class="memItemRight" valign="bottom"><b>ALPHABETS</b> = 26</td></tr>
|
||||
<tr class="separator:a7c3ba4caf24378826a789848629177bd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>A basic implementation of trie class to store only lower-case strings. You can extend the implementation to all the ASCII characters by changing the value of @ ALPHABETS to 128. </p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a6d10eb1669453395d1900ebd401954fb"></a>
|
||||
<div class="textblock"><p >A basic implementation of trie class to store only lower-case strings. You can extend the implementation to all the ASCII characters by changing the value of @ ALPHABETS to 128. </p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a6af57e9f25d0d0a2d59eea5a4a802908" name="a6af57e9f25d0d0a2d59eea5a4a802908"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6af57e9f25d0d0a2d59eea5a4a802908">◆ </a></span>Trie()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Trie::Trie </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>constructor to initialise the root of the trie. </p>
|
||||
<div class="fragment"><div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>: m_root(std::make_shared<TrieNode>()) {}</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a6d10eb1669453395d1900ebd401954fb" name="a6d10eb1669453395d1900ebd401954fb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6d10eb1669453395d1900ebd401954fb">◆ </a></span>hasChildren()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -176,7 +196,7 @@ static constexpr size_t </td><td class="memItemRight" valign="bottom"><b>AL
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Function to check if a node has some children which can form words. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<p >Function to check if a node has some children which can form words. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">node</td><td>whose character array of pointers need to be checked for children. </td></tr>
|
||||
</table>
|
||||
@@ -185,19 +205,19 @@ static constexpr size_t </td><td class="memItemRight" valign="bottom"><b>AL
|
||||
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if a child is found </dd>
|
||||
<dd>
|
||||
<code>false</code> if a child is not found </dd></dl>
|
||||
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < ALPHABETS; i++) {</div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d5/da1/structnode.html">node</a>->character[i]) {</div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div>
|
||||
<div class="fragment"><div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> {</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < ALPHABETS; i++) {</div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">if</span> (<a class="code hl_class" href="../../d5/da1/structnode.html">node</a>->character[i]) {</div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
|
||||
<div class="ttc" id="astructnode_html"><div class="ttname"><a href="../../d5/da1/structnode.html">node</a></div><div class="ttdef"><b>Definition:</b> avltree.cpp:13</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="afd8b79959009b554e98ea7128b2886f2"></a>
|
||||
<a id="afd8b79959009b554e98ea7128b2886f2" name="afd8b79959009b554e98ea7128b2886f2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afd8b79959009b554e98ea7128b2886f2">◆ </a></span>insert()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -220,32 +240,32 @@ static constexpr size_t </td><td class="memItemRight" valign="bottom"><b>AL
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Insert a word into the trie. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<p >Insert a word into the trie. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">word</td><td>which needs to be inserted into the string. </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">auto</span> curr = m_root;</div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">for</span> (<span class="keywordtype">char</span> ch : word) {</div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">size_t</span> index = ch - <span class="charliteral">'a'</span>;</div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// if a node for current word is not already present in trie, create</span></div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// a new node for it.</span></div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (!curr->character[index]) {</div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  curr->character[index] = std::make_shared<TrieNode>();</div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  curr = curr->character[index];</div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  curr->isEndOfWord = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div>
|
||||
<div class="fragment"><div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> {</div>
|
||||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">auto</span> curr = m_root;</div>
|
||||
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">for</span> (<span class="keywordtype">char</span> ch : word) {</div>
|
||||
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordtype">size_t</span> index = ch - <span class="charliteral">'a'</span>;</div>
|
||||
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
|
||||
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// if a node for current word is not already present in trie, create</span></div>
|
||||
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// a new node for it.</span></div>
|
||||
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">if</span> (!curr->character[index]) {</div>
|
||||
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> curr->character[index] = std::make_shared<TrieNode>();</div>
|
||||
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
|
||||
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
|
||||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> curr = curr->character[index];</div>
|
||||
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
|
||||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> curr->isEndOfWord = <span class="keyword">true</span>;</div>
|
||||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="a95216ffc56cb9f8cede982cecb872af4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a95216ffc56cb9f8cede982cecb872af4">◆ </a></span>removeWordHelper()</h2>
|
||||
<a id="a734a08b52b8ad73bdd1f36ae8348056e" name="a734a08b52b8ad73bdd1f36ae8348056e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a734a08b52b8ad73bdd1f36ae8348056e">◆ </a></span>removeWord()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -254,7 +274,37 @@ static constexpr size_t </td><td class="memItemRight" valign="bottom"><b>AL
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a><<a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a>> Trie::removeWordHelper </td>
|
||||
<td class="memname">void Trie::removeWord </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> & </td>
|
||||
<td class="paramname"><em>word</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<div class="fragment"><div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> {</div>
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> m_root = <a class="code hl_function" href="../../dd/d2f/class_trie.html#a26941759ecf94d67a27d4a610bc0f63d">removeWordHelper</a>(word, m_root, 0);</div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> }</div>
|
||||
<div class="ttc" id="aclass_trie_html_a26941759ecf94d67a27d4a610bc0f63d"><div class="ttname"><a href="../../dd/d2f/class_trie.html#a26941759ecf94d67a27d4a610bc0f63d">Trie::removeWordHelper</a></div><div class="ttdeci">std::shared_ptr< TrieNode > removeWordHelper(const std::string &word, std::shared_ptr< TrieNode > curr, size_t index)</div><div class="ttdef"><b>Definition:</b> trie_modern.cpp:64</div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="a26941759ecf94d67a27d4a610bc0f63d" name="a26941759ecf94d67a27d4a610bc0f63d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a26941759ecf94d67a27d4a610bc0f63d">◆ </a></span>removeWordHelper()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr</a>< <a class="el" href="../../de/d48/struct_trie_1_1_trie_node.html">TrieNode</a> > Trie::removeWordHelper </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> & </td>
|
||||
<td class="paramname"><em>word</em>, </td>
|
||||
@@ -283,7 +333,7 @@ static constexpr size_t </td><td class="memItemRight" valign="bottom"><b>AL
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>A recursive helper function to remove a word from the trie. First, it recursively traverses to the location of last character of word in the trie. However, if the word is not found, the function returns a runtime error. Upon successfully reaching the last character of word in trie, if sets the isEndOfWord to false and deletes the node if and only if it has no children, else it returns the current node. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<p >A recursive helper function to remove a word from the trie. First, it recursively traverses to the location of last character of word in the trie. However, if the word is not found, the function returns a runtime error. Upon successfully reaching the last character of word in trie, if sets the isEndOfWord to false and deletes the node if and only if it has no children, else it returns the current node. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">word</td><td>is the string which needs to be removed from trie. </td></tr>
|
||||
<tr><td class="paramname">curr</td><td>is the current node we are at. </td></tr>
|
||||
@@ -298,56 +348,55 @@ static constexpr size_t </td><td class="memItemRight" valign="bottom"><b>AL
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (word.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">size</a>() == index) {</div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span> (curr->isEndOfWord) {</div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  curr->isEndOfWord = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span> (<a class="code" href="../../dd/d2f/class_trie.html#a6d10eb1669453395d1900ebd401954fb">hasChildren</a>(curr)) {</div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> curr;</div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">size_t</span> idx = word[index] - <span class="charliteral">'a'</span>;</div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// Throw a runtime error in case the user enters a word which is not</span></div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// present in the trie.</span></div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (!curr->character[idx]) {</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">throw</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/error/runtime_error.html">std::runtime_error</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(<span class="stringliteral">"Word not found."</span>)));</div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  curr->character[idx] =</div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="../../dd/d2f/class_trie.html#a95216ffc56cb9f8cede982cecb872af4">removeWordHelper</a>(word, curr->character[idx], index + 1);</div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// This if condition checks if the node has some childern.</span></div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// The 1st if check, i.e. (curr->character[idx]) is checked specifically</span></div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// because if the older string is a prefix of some other string, then,</span></div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// there would be no need to check all 26 characters. Example- str1 =</span></div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// abbey, str2 = abbex and we want to delete string "abbey", then in</span></div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// this case, there would be no need to check all characters for the</span></div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// chars a,b,b.</span></div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span> (curr->character[idx] || <a class="code" href="../../dd/d2f/class_trie.html#a6d10eb1669453395d1900ebd401954fb">hasChildren</a>(curr)) {</div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> curr;</div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div>
|
||||
<div class="fragment"><div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> {</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">if</span> (word.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">size</a>() == index) {</div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">if</span> (curr->isEndOfWord) {</div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> curr->isEndOfWord = <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> }</div>
|
||||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="../../dd/d2f/class_trie.html#a6d10eb1669453395d1900ebd401954fb">hasChildren</a>(curr)) {</div>
|
||||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordflow">return</span> curr;</div>
|
||||
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> }</div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> }</div>
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">size_t</span> idx = word[index] - <span class="charliteral">'a'</span>;</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// Throw a runtime error in case the user enters a word which is not</span></div>
|
||||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// present in the trie.</span></div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">if</span> (!curr->character[idx]) {</div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">throw</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/error/runtime_error.html">std::runtime_error</a>(<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a>(<a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(<span class="stringliteral">"Word not found."</span>)));</div>
|
||||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> }</div>
|
||||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
|
||||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> curr->character[idx] =</div>
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_function" href="../../dd/d2f/class_trie.html#a26941759ecf94d67a27d4a610bc0f63d">removeWordHelper</a>(word, curr->character[idx], index + 1);</div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// This if condition checks if the node has some childern.</span></div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// The 1st if check, i.e. (curr->character[idx]) is checked specifically</span></div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// because if the older string is a prefix of some other string, then,</span></div>
|
||||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// there would be no need to check all 26 characters. Example- str1 =</span></div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// abbey, str2 = abbex and we want to delete string "abbey", then in</span></div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// this case, there would be no need to check all characters for the</span></div>
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// chars a,b,b.</span></div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">if</span> (curr->character[idx] || <a class="code hl_function" href="../../dd/d2f/class_trie.html#a6d10eb1669453395d1900ebd401954fb">hasChildren</a>(curr)) {</div>
|
||||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">return</span> curr;</div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> }</div>
|
||||
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
||||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> }</div>
|
||||
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div></div>
|
||||
<div class="ttc" id="aclass_trie_html_a6d10eb1669453395d1900ebd401954fb"><div class="ttname"><a href="../../dd/d2f/class_trie.html#a6d10eb1669453395d1900ebd401954fb">Trie::hasChildren</a></div><div class="ttdeci">static bool hasChildren(std::shared_ptr< TrieNode > node)</div><div class="ttdef"><b>Definition:</b> trie_modern.cpp:41</div></div>
|
||||
<div class="ttc" id="aclass_trie_html_a95216ffc56cb9f8cede982cecb872af4"><div class="ttname"><a href="../../dd/d2f/class_trie.html#a95216ffc56cb9f8cede982cecb872af4">Trie::removeWordHelper</a></div><div class="ttdeci">std::shared_ptr< TrieNode > removeWordHelper(const std::string &word, std::shared_ptr< TrieNode > curr, size_t index)</div><div class="ttdef"><b>Definition:</b> trie_modern.cpp:64</div></div>
|
||||
<div class="ttc" id="amove_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/move.html">std::move</a></div><div class="ttdeci">T move(T... args)</div></div>
|
||||
<div class="ttc" id="aruntime_error_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/error/runtime_error.html">std::runtime_error</a></div></div>
|
||||
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/size.html">std::string::size</a></div><div class="ttdeci">T size(T... args)</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="../../dd/d2f/class_trie_a95216ffc56cb9f8cede982cecb872af4_cgraph.svg" width="348" height="139"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="../../dd/d2f/class_trie_a26941759ecf94d67a27d4a610bc0f63d_cgraph.svg" width="348" height="139"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a411e77126930a0942dd7b65e96b15206"></a>
|
||||
<a id="a411e77126930a0942dd7b65e96b15206" name="a411e77126930a0942dd7b65e96b15206"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a411e77126930a0942dd7b65e96b15206">◆ </a></span>search()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -370,7 +419,7 @@ Here is the call graph for this function:</div>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Search if a word is present in trie or not. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<p >Search if a word is present in trie or not. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">word</td><td>which is needed to be searched in the trie. </td></tr>
|
||||
</table>
|
||||
@@ -379,20 +428,20 @@ Here is the call graph for this function:</div>
|
||||
<dl class="section return"><dt>Returns</dt><dd>True if the word is found in trie and isEndOfWord is set to true. </dd>
|
||||
<dd>
|
||||
False if word is not found in trie or isEndOfWord is set to false. </dd></dl>
|
||||
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">auto</span> curr = m_root;</div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span> (<span class="keywordtype">char</span> ch : word) {</div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">size_t</span> index = ch - <span class="charliteral">'a'</span>;</div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
|
||||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// if any node for a character is not found, then return that the</span></div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// word cannot be formed.</span></div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span> (!curr->character[index]) {</div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  curr = curr->character[index];</div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> curr->isEndOfWord;</div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div>
|
||||
<div class="fragment"><div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">auto</span> curr = m_root;</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">for</span> (<span class="keywordtype">char</span> ch : word) {</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordtype">size_t</span> index = ch - <span class="charliteral">'a'</span>;</div>
|
||||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
|
||||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// if any node for a character is not found, then return that the</span></div>
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// word cannot be formed.</span></div>
|
||||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">if</span> (!curr->character[index]) {</div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> }</div>
|
||||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> curr = curr->character[index];</div>
|
||||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> curr->isEndOfWord;</div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -405,7 +454,7 @@ False if word is not found in trie or isEndOfWord is set to false. </dd></dl>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../dd/d2f/class_trie.html">Trie</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
var class_trie =
|
||||
[
|
||||
[ "TrieNode", "de/d48/struct_trie_1_1_trie_node.html", "de/d48/struct_trie_1_1_trie_node" ],
|
||||
[ "TrieNode", "de/d48/struct_trie_1_1_trie_node.html", null ],
|
||||
[ "Trie", "dd/d2f/class_trie.html#a6af57e9f25d0d0a2d59eea5a4a802908", null ],
|
||||
[ "hasChildren", "dd/d2f/class_trie.html#a6d10eb1669453395d1900ebd401954fb", null ],
|
||||
[ "insert", "dd/d2f/class_trie.html#afd8b79959009b554e98ea7128b2886f2", null ],
|
||||
[ "removeWord", "dd/d2f/class_trie.html#a734a08b52b8ad73bdd1f36ae8348056e", null ],
|
||||
[ "removeWordHelper", "dd/d2f/class_trie.html#a95216ffc56cb9f8cede982cecb872af4", null ],
|
||||
[ "search", "dd/d2f/class_trie.html#a411e77126930a0942dd7b65e96b15206", null ],
|
||||
[ "ALPHABETS", "dd/d2f/class_trie.html#a7c3ba4caf24378826a789848629177bd", null ],
|
||||
[ "m_root", "dd/d2f/class_trie.html#a58b359fad33ca0064bd75a0d41a7b66d", null ]
|
||||
[ "removeWordHelper", "dd/d2f/class_trie.html#a26941759ecf94d67a27d4a610bc0f63d", null ],
|
||||
[ "search", "dd/d2f/class_trie.html#a411e77126930a0942dd7b65e96b15206", null ]
|
||||
];
|
||||
@@ -0,0 +1 @@
|
||||
49f37747ae0a788844deebf481f9c846
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
|
||||
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
|
||||
-->
|
||||
<!-- Title: Trie::removeWordHelper Pages: 1 -->
|
||||
<svg width="261pt" height="104pt"
|
||||
@@ -18,6 +18,12 @@
|
||||
</a>
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node1 -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>Node1->Node1</title>
|
||||
<path fill="none" stroke="midnightblue" d="M40.31,-57.76C29.51,-66.57 36.91,-76 62.5,-76 79.3,-76 88.26,-71.94 89.38,-66.65"/>
|
||||
<polygon fill="midnightblue" stroke="midnightblue" points="92.45,-64.97 84.69,-57.76 86.26,-68.24 92.45,-64.97"/>
|
||||
</g>
|
||||
<!-- Node2 -->
|
||||
<g id="node2" class="node">
|
||||
<title>Node2</title>
|
||||
@@ -58,7 +64,7 @@
|
||||
</g>
|
||||
</g>
|
||||
<!-- Node1->Node4 -->
|
||||
<g id="edge3" class="edge">
|
||||
<g id="edge4" class="edge">
|
||||
<title>Node1->Node4</title>
|
||||
<path fill="none" stroke="midnightblue" d="M99.46,-38.41C117.94,-33.48 140.66,-27.43 160.36,-22.17"/>
|
||||
<polygon fill="midnightblue" stroke="midnightblue" points="161.29,-25.54 170.05,-19.59 159.49,-18.78 161.29,-25.54"/>
|
||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.4 KiB |
@@ -1 +0,0 @@
|
||||
9a766095fb839cbad3c0e066810b3e24
|
||||
Reference in New Issue
Block a user