<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>n-ary Archives - Huahua&#039;s Tech Road</title>
	<atom:link href="https://zxi.mytechroad.com/blog/tag/n-ary/feed/" rel="self" type="application/rss+xml" />
	<link>https://zxi.mytechroad.com/blog/tag/n-ary/</link>
	<description></description>
	<lastBuildDate>Tue, 04 Sep 2018 09:14:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.8</generator>

<image>
	<url>https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/cropped-photo-32x32.jpg</url>
	<title>n-ary Archives - Huahua&#039;s Tech Road</title>
	<link>https://zxi.mytechroad.com/blog/tag/n-ary/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>花花酱 LeetCode 429. N-ary Tree Level Order Traversal</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-429-n-ary-tree-level-order-traversal/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-429-n-ary-tree-level-order-traversal/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Sat, 14 Jul 2018 19:22:28 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[n-ary]]></category>
		<category><![CDATA[perorder]]></category>
		<category><![CDATA[tree]]></category>
		<guid isPermaLink="false">http://zxi.mytechroad.com/blog/?p=3140</guid>

					<description><![CDATA[<p>Problem Given an n-ary tree, return the level order traversal of its nodes&#8217; values. (ie, from left to right, level by level). For example, given&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-429-n-ary-tree-level-order-traversal/">花花酱 LeetCode 429. N-ary Tree Level Order Traversal</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Problem</h1>
<p>Given an n-ary tree, return the level order traversal of its nodes&#8217; values. (ie, from left to right, level by level).</p>
<p>For example, given a <code>3-ary</code> tree:</p>
<p>&nbsp;</p>
<p><img src="https://leetcode.com/static/images/problemset/NaryTreeExample.png" width="40%" height="40%" /></p>
<p>&nbsp;</p>
<p>We should return its level order traversal:</p>
<pre class="crayon:false">[
     [1],
     [3,2,4],
     [5,6]
]
</pre>
<p><b>Note:</b></p>
<ol>
<li>The depth of the tree is at most <code>1000</code>.</li>
<li>The total number of nodes is at most <code>5000</code>.</li>
</ol>
<h1><strong>Solution1: Recursion</strong></h1>
<p>Time complexity: O(n)</p>
<p>Space complexity: O(n)</p>
<p>C++</p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 44 ms
class Solution {
public:
  vector&lt;vector&lt;int&gt;&gt; levelOrder(Node* root) {
    vector&lt;vector&lt;int&gt;&gt; ans;
    preorder(root, 0, ans);
    return ans;
  }
private:
  void preorder(Node* root, int d, vector&lt;vector&lt;int&gt;&gt;&amp; ans) {
    if (root == nullptr) return;
    while (ans.size() &lt;= d) ans.push_back({});
    ans[d].push_back(root-&gt;val);
    for (auto child : root-&gt;children)
      preorder(child, d + 1, ans);
  }
};</pre><p></p>
<h1><strong>Solution2: Iterative</strong></h1>
<p></p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 44 ms
class Solution {
public:
  vector&lt;vector&lt;int&gt;&gt; levelOrder(Node* root) {
    if (!root) return {};
    vector&lt;vector&lt;int&gt;&gt; ans;    
    queue&lt;Node*&gt; q;
    q.push(root);
    int depth = 0;
    while (!q.empty()) {
      int size = q.size();
      ans.push_back({});
      while (size--) {
        Node* n = q.front(); q.pop();
        ans[depth].push_back(n-&gt;val);
        for (auto child : n-&gt;children)
          q.push(child);
      }
      ++depth;
    }
    return ans;
  }
};</pre><p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-429-n-ary-tree-level-order-traversal/">花花酱 LeetCode 429. N-ary Tree Level Order Traversal</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://zxi.mytechroad.com/blog/tree/leetcode-429-n-ary-tree-level-order-traversal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>花花酱 LeetCode 559. Maximum Depth of N-ary Tree</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-559-maximum-depth-of-n-ary-tree/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-559-maximum-depth-of-n-ary-tree/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Sat, 14 Jul 2018 14:31:30 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[depth]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[n-ary]]></category>
		<category><![CDATA[tree]]></category>
		<guid isPermaLink="false">http://zxi.mytechroad.com/blog/?p=3122</guid>

					<description><![CDATA[<p>Problem Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-559-maximum-depth-of-n-ary-tree/">花花酱 LeetCode 559. Maximum Depth of N-ary Tree</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Problem</h1>
<p>Given a n-ary tree, find its maximum depth.</p>
<p>The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.</p>
<p>For example, given a <code>3-ary</code> tree:</p>
<p>&nbsp;</p>
<p><img src="https://leetcode.com/static/images/problemset/NaryTreeExample.png" width="40%" height="40%" /></p>
<p>&nbsp;</p>
<p>We should return its max depth, which is 3.</p>
<p><b>Note:</b></p>
<ol>
<li>The depth of the tree is at most <code>1000</code>.</li>
<li>The total number of nodes is at most <code>5000</code>.</li>
</ol>
<h1><strong>Solution: Recursion</strong></h1>
<p>Time complexity: O(n)</p>
<p>Space complexity: O(n)</p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 40 ms
class Solution {
public:
  int maxDepth(Node* root) {
    if (root == nullptr) return 0;
    int depth = 0;
    for (auto child : root-&gt;children)
      depth = max(depth, maxDepth(child));
    return depth + 1;
  }
};</pre><p></p>
<h1><strong>Related Problems</strong></h1>
<ul>
<li><a href="http://zxi.mytechroad.com/blog/tree/leetcode-590-n-ary-tree-postorder-traversal/">花花酱 LeetCode 590. N-ary Tree Postorder Traversal</a></li>
<li><a href="http://zxi.mytechroad.com/blog/tree/leetcode-589-n-ary-tree-preorder-traversal/">花花酱 LeetCode 589. N-ary Tree Preorder Traversal</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-559-maximum-depth-of-n-ary-tree/">花花酱 LeetCode 559. Maximum Depth of N-ary Tree</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://zxi.mytechroad.com/blog/tree/leetcode-559-maximum-depth-of-n-ary-tree/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>花花酱 LeetCode 590. N-ary Tree Postorder Traversal</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-590-n-ary-tree-postorder-traversal/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-590-n-ary-tree-postorder-traversal/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Fri, 13 Jul 2018 06:24:56 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[n-ary]]></category>
		<category><![CDATA[postorder]]></category>
		<category><![CDATA[traversal]]></category>
		<category><![CDATA[tree]]></category>
		<guid isPermaLink="false">http://zxi.mytechroad.com/blog/?p=3113</guid>

					<description><![CDATA[<p>Problem Given an n-ary tree, return the postorder traversal of its nodes&#8217; values. &#160; For example, given a 3-ary tree: &#160; Return its postorder traversal as: [5,6,3,2,4,1]. &#160; Note: Recursive solution&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-590-n-ary-tree-postorder-traversal/">花花酱 LeetCode 590. N-ary Tree Postorder Traversal</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><strong>Problem</strong></h1>
<p>Given an n-ary tree, return the <i>postorder</i> traversal of its nodes&#8217; values.</p>
<p>&nbsp;</p>
<p>For example, given a <code>3-ary</code> tree:</p>
<p><img src="https://leetcode.com/static/images/problemset/NaryTreeExample.png" width="40%" height="40%" /></p>
<p>&nbsp;</p>
<p>Return its postorder traversal as: <code>[5,6,3,2,4,1]</code>.</p>
<p>&nbsp;</p>
<p><b>Note:</b> Recursive solution is trivial, could you do it iteratively?</p>
<p><ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-2404451723245401" data-ad-slot="7983117522"> </ins></p>
<h1><strong>Solution 1: Recursive</strong></h1>
<p><div class="responsive-tabs">
<h2 class="tabtitle">C++</h2>
<div class="tabcontent">
</p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 44 ms
class Solution {
public:
  vector&lt;int&gt; postorder(Node* root) {
    vector&lt;int&gt; ans;
    postorder(root, ans);
    return ans;
  }
private:
  void postorder(Node* root, vector&lt;int&gt;&amp; ans) {
    if (!root) return;
    for (auto child : root-&gt;children)
      postorder(child, ans);
    ans.push_back(root-&gt;val);
  }
};</pre><p></div></div></p>
<h1><strong>Solution 2: Iterative</strong></h1>
<p><div class="responsive-tabs">
<h2 class="tabtitle">C++</h2>
<div class="tabcontent">
</p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 44 ms
class Solution {
public:
  vector&lt;int&gt; postorder(Node* root) {
   if (!root) return {};
    vector&lt;int&gt; ans;
    stack&lt;Node*&gt; s;
    s.push(root);
    while (!s.empty()) {
      const Node* node = s.top(); s.pop();      
      ans.push_back(node-&gt;val);
      for (auto child : node-&gt;children)
        s.push(child);      
    }
    reverse(begin(ans), end(ans));
    return ans;
  }
};</pre><p></div></div></p>
<h1><strong>Related Problems</strong></h1>
<ul>
<li><a href="http://zxi.mytechroad.com/blog/tree/leetcode-589-n-ary-tree-preorder-traversal/">花花酱 LeetCode 589. N-ary Tree Preorder Traversal</a></li>
<li><a href="http://zxi.mytechroad.com/blog/tree/leetcode-145-binary-tree-postorder-traversal/">花花酱 LeetCode 145. Binary Tree Postorder Traversal</a></li>
<li><a href="http://zxi.mytechroad.com/blog/leetcode/leetcode-102-binary-tree-level-order-traversal/">花花酱 LeetCode 102. Binary Tree Level Order Traversal</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-590-n-ary-tree-postorder-traversal/">花花酱 LeetCode 590. N-ary Tree Postorder Traversal</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://zxi.mytechroad.com/blog/tree/leetcode-590-n-ary-tree-postorder-traversal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>花花酱 LeetCode 589. N-ary Tree Preorder Traversal</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-589-n-ary-tree-preorder-traversal/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-589-n-ary-tree-preorder-traversal/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Fri, 13 Jul 2018 06:15:15 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[n-ary]]></category>
		<category><![CDATA[preorder]]></category>
		<category><![CDATA[traversla]]></category>
		<category><![CDATA[tree]]></category>
		<guid isPermaLink="false">http://zxi.mytechroad.com/blog/?p=3108</guid>

					<description><![CDATA[<p>Problem Given an n-ary tree, return the preorder traversal of its nodes&#8217; values. &#160; For example, given a 3-ary tree: &#160; Return its preorder traversal as: [1,3,5,6,2,4]. &#160; Note: Recursive solution&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-589-n-ary-tree-preorder-traversal/">花花酱 LeetCode 589. N-ary Tree Preorder Traversal</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><strong>Problem</strong></h1>
<p>Given an n-ary tree, return the <i>preorder</i> traversal of its nodes&#8217; values.</p>
<p>&nbsp;</p>
<p>For example, given a <code>3-ary</code> tree:</p>
<p><img src="https://leetcode.com/static/images/problemset/NaryTreeExample.png" width="40%" height="40%" /></p>
<p>&nbsp;</p>
<p>Return its preorder traversal as: <code>[1,3,5,6,2,4]</code>.</p>
<p>&nbsp;</p>
<p><b>Note:</b> Recursive solution is trivial, could you do it iteratively?</p>
<h1><strong>Solution1: Recursive</strong></h1>
<p></p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 48 ms
class Solution {
public:
  vector&lt;int&gt; preorder(Node* root) {
    vector&lt;int&gt; ans;
    preorder(root, ans);
    return ans;
  }
private:
  void preorder(Node* root, vector&lt;int&gt;&amp; ans) {
    if (!root) return;
    ans.push_back(root-&gt;val);
    for (const auto&amp; child : root-&gt;children)
      preorder(child, ans);
  }
};</pre><p></p>
<h1><strong>Solution2: Iterative</strong></h1>
<p></p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 52 ms
class Solution {
public:
  vector&lt;int&gt; preorder(Node* root) {
    if (!root) return {};
    vector&lt;int&gt; ans;
    stack&lt;Node*&gt; s;
    s.push(root);
    while (!s.empty()) {
      const Node* node = s.top(); s.pop();
      ans.push_back(node-&gt;val);
      for (auto it = node-&gt;children.rbegin(); it != node-&gt;children.rend(); ++it)
        s.push(*it);
    }
    return ans;
  }
};</pre><p></p>
<h1><strong>Related Problems</strong></h1>
<ul>
<li><a href="http://zxi.mytechroad.com/blog/tree/leetcode-590-n-ary-tree-postorder-traversal/">花花酱 LeetCode 590. N-ary Tree Postorder Traversal</a></li>
<li><a href="http://zxi.mytechroad.com/blog/tree/leetcode-331-verify-preorder-serialization-of-a-binary-tree/">花花酱 LeetCode 331. Verify Preorder Serialization of a Binary Tree</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-589-n-ary-tree-preorder-traversal/">花花酱 LeetCode 589. N-ary Tree Preorder Traversal</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://zxi.mytechroad.com/blog/tree/leetcode-589-n-ary-tree-preorder-traversal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
