<?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>level Archives - Huahua&#039;s Tech Road</title>
	<atom:link href="https://zxi.mytechroad.com/blog/tag/level/feed/" rel="self" type="application/rss+xml" />
	<link>https://zxi.mytechroad.com/blog/tag/level/</link>
	<description></description>
	<lastBuildDate>Mon, 29 Nov 2021 03:43:37 +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>level Archives - Huahua&#039;s Tech Road</title>
	<link>https://zxi.mytechroad.com/blog/tag/level/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>花花酱 LeetCode 199. Binary Tree Right Side View</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-199-binary-tree-right-side-view/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-199-binary-tree-right-side-view/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Mon, 29 Nov 2021 03:43:18 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[pre-order]]></category>
		<category><![CDATA[tree]]></category>
		<guid isPermaLink="false">https://zxi.mytechroad.com/blog/?p=8894</guid>

					<description><![CDATA[<p>Given the&#160;root&#160;of a binary tree, imagine yourself standing on the&#160;right side&#160;of it, return&#160;the values of the nodes you can see ordered from top to bottom.&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-199-binary-tree-right-side-view/">花花酱 LeetCode 199. Binary Tree Right Side View</a> appeared first on <a rel="nofollow" href="https://zxi.mytechroad.com/blog">Huahua&#039;s Tech Road</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Given the&nbsp;<code>root</code>&nbsp;of a binary tree, imagine yourself standing on the&nbsp;<strong>right side</strong>&nbsp;of it, return&nbsp;<em>the values of the nodes you can see ordered from top to bottom</em>.</p>



<p><strong>Example 1:</strong></p>



<figure class="wp-block-image"><img src="https://assets.leetcode.com/uploads/2021/02/14/tree.jpg" alt=""/></figure>



<pre class="wp-block-preformatted;crayon:false"><strong>Input:</strong> root = [1,2,3,null,5,null,4]
<strong>Output:</strong> [1,3,4]
</pre>



<p><strong>Example 2:</strong></p>



<pre class="wp-block-preformatted;crayon:false"><strong>Input:</strong> root = [1,null,3]
<strong>Output:</strong> [1,3]
</pre>



<p><strong>Example 3:</strong></p>



<pre class="wp-block-preformatted;crayon:false"><strong>Input:</strong> root = []
<strong>Output:</strong> []
</pre>



<p><strong>Constraints:</strong></p>



<ul><li>The number of nodes in the tree is in the range&nbsp;<code>[0, 100]</code>.</li><li><code>-100 &lt;= Node.val &lt;= 100</code></li></ul>



<h2><strong>Solution: Pre-order traversal</strong></h2>



<p>By using pre-order traversal, the right most node will be the last one to visit in each level.</p>



<p>Time complexity: O(n)<br>Space complexity: O(|height|)</p>



<div class="responsive-tabs">
<h2 class="tabtitle">C++</h2>
<div class="tabcontent">

<pre class="crayon-plain-tag">// Author: Huahua
class Solution {
public:
  vector&lt;int&gt; rightSideView(TreeNode* root) {
    vector&lt;int&gt; ans;
    function&lt;void(TreeNode*, int)&gt; dfs = [&amp;](TreeNode* root, int d) {
      if (!root) return;
      if (ans.size() &lt; d + 1) ans.push_back(0);
      ans[d] = root-&gt;val;
      dfs(root-&gt;left, d + 1);
      dfs(root-&gt;right, d + 1);
    };
    dfs(root, 0);
    return ans;
  }
};</pre>
</div></div>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-199-binary-tree-right-side-view/">花花酱 LeetCode 199. Binary Tree Right Side View</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-199-binary-tree-right-side-view/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>花花酱 LeetCode 103. Binary Tree Zigzag Level Order Traversal</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-103-binary-tree-zigzag-level-order-traversal/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-103-binary-tree-zigzag-level-order-traversal/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Wed, 21 Aug 2019 05:10:56 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[medium]]></category>
		<category><![CDATA[tree]]></category>
		<category><![CDATA[zigzag]]></category>
		<guid isPermaLink="false">https://zxi.mytechroad.com/blog/?p=5473</guid>

					<description><![CDATA[<p>Given a binary tree, return the&#160;zigzag level order&#160;traversal of its nodes&#8217; values. (ie, from left to right, then right to left for the next level&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-103-binary-tree-zigzag-level-order-traversal/">花花酱 LeetCode 103. Binary Tree Zigzag 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[
<p>Given a binary tree, return the&nbsp;<em>zigzag level order</em>&nbsp;traversal of its nodes&#8217; values. (ie, from left to right, then right to left for the next level and alternate between).</p>



<p>For example:<br>Given binary tree&nbsp;<code>[3,9,20,null,null,15,7]</code>,<br></p>



<pre class="wp-block-preformatted;crayon:false">    3
   / \
  9  20
    /  \
   15   7
</pre>



<p>return its zigzag level order traversal as:<br></p>



<pre class="wp-block-preformatted;crayon:false">[
  [3],
  [20,9],
  [15,7]
]</pre>



<h2><strong>Solution 1: DFS</strong></h2>



<p>in order traversal using DFS and reverse the result of even levels.</p>



<p>Time complexity: O(n)<br>Space complexity: O(n)</p>



<div class="responsive-tabs">
<h2 class="tabtitle">C++</h2>
<div class="tabcontent">

<pre class="crayon-plain-tag">// Author: Huahua, 0ms, 15.1 MB
class Solution {
public:
  vector&lt;vector&lt;int&gt; &gt; zigzagLevelOrder(TreeNode *root) {
    vector&lt;vector&lt;int&gt;&gt; ans;
    function&lt;void(TreeNode*, int)&gt; dfs = [&amp;](TreeNode* r, int d) {
      if (!r) return;
      while (ans.size() &lt;= d) ans.push_back({});      
      ans[d].push_back(r-&gt;val);      
      dfs(r-&gt;right, d + 1);
      dfs(r-&gt;left, d + 1);
    };
    dfs(root, 0);    
    for (int i = 0; i &lt; ans.size(); i += 2)
      reverse(begin(ans[i]), end(ans[i]));      
    return ans;
  }
};</pre>
</div></div>



<h2><strong>Solution 2: BFS</strong></h2>



<p>Expend/append in order for even levels and doing that in reverse order for odd levels.</p>



<p>Time complexity: O(n)<br>Space complexity: O(n)</p>



<div class="responsive-tabs">
<h2 class="tabtitle">C++</h2>
<div class="tabcontent">

<pre class="crayon-plain-tag">// Author: Huahua
class Solution {
public:
  vector&lt;vector&lt;int&gt;&gt; zigzagLevelOrder(TreeNode *root) {
    if (!root) return {};
    vector&lt;vector&lt;int&gt;&gt; ans;
    deque&lt;TreeNode*&gt; q;
    q.push_back(root);
    int d = 0;
    while (q.size()) {
      ans.push_back({});    
      auto cur = &amp;ans.back();
      deque&lt;TreeNode*&gt; next;
      while (q.size()) {
        if (d % 2) {
          TreeNode* node = q.back();
          q.pop_back();
          cur-&gt;push_back(node-&gt;val);
          if (node-&gt;right) next.push_front(node-&gt;right);
          if (node-&gt;left) next.push_front(node-&gt;left);          
        } else {
          TreeNode* node = q.front();
          q.pop_front();
          cur-&gt;push_back(node-&gt;val);
          if (node-&gt;left) next.push_back(node-&gt;left);
          if (node-&gt;right) next.push_back(node-&gt;right);          
        }
      }
      ++d;
      q.swap(next);
    }
    return ans;
  }
};</pre>
</div></div>



<h2><strong>Related Problems</strong></h2>



<ul><li><a href="https://zxi.mytechroad.com/blog/leetcode/leetcode-102-binary-tree-level-order-traversal/">https://zxi.mytechroad.com/blog/leetcode/leetcode-102-binary-tree-level-order-traversal/</a></li><li><a href="https://zxi.mytechroad.com/blog/tree/leetcode-637-average-of-levels-in-binary-tree/">https://zxi.mytechroad.com/blog/tree/leetcode-637-average-of-levels-in-binary-tree/</a></li><li><a href="https://zxi.mytechroad.com/blog/tree/leetcode-429-n-ary-tree-level-order-traversal/">https://zxi.mytechroad.com/blog/tree/leetcode-429-n-ary-tree-level-order-traversal/</a></li></ul>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-103-binary-tree-zigzag-level-order-traversal/">花花酱 LeetCode 103. Binary Tree Zigzag 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-103-binary-tree-zigzag-level-order-traversal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>花花酱 LeetCode 1161. Maximum Level Sum of a Binary Tree</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-1161-maximum-level-sum-of-a-binary-tree/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-1161-maximum-level-sum-of-a-binary-tree/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Sun, 18 Aug 2019 05:14:48 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[level]]></category>
		<category><![CDATA[medium]]></category>
		<category><![CDATA[tree]]></category>
		<guid isPermaLink="false">https://zxi.mytechroad.com/blog/?p=5441</guid>

					<description><![CDATA[<p>Given the&#160;root&#160;of a binary tree, the level of its root is&#160;1,&#160;the level of its children is&#160;2,&#160;and so on. Return the&#160;smallest&#160;level&#160;X&#160;such that the sum of all&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-1161-maximum-level-sum-of-a-binary-tree/">花花酱 LeetCode 1161. Maximum Level Sum of a Binary 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[
<p>Given the&nbsp;<code>root</code>&nbsp;of a binary tree, the level of its root is&nbsp;<code>1</code>,&nbsp;the level of its children is&nbsp;<code>2</code>,&nbsp;and so on.</p>



<p>Return the&nbsp;<strong>smallest</strong>&nbsp;level&nbsp;<code>X</code>&nbsp;such that the sum of all the values of nodes at level&nbsp;<code>X</code>&nbsp;is&nbsp;<strong>maximal</strong>.</p>



<p><strong>Example 1:</strong></p>



<figure class="wp-block-image"><img src="https://assets.leetcode.com/uploads/2019/05/03/capture.JPG" alt=""/></figure>



<pre class="wp-block-preformatted;crayon:false"><strong>Input: </strong>[1,7,0,7,-8,null,null]
<strong>Output: </strong>2
<strong>Explanation: </strong>
Level 1 sum = 1.
Level 2 sum = 7 + 0 = 7.
Level 3 sum = 7 + -8 = -1.
So we return the level with the maximum sum which is level 2.
</pre>



<p><strong>Note:</strong></p>



<ol><li>The number of nodes in the given tree is between&nbsp;<code>1</code>&nbsp;and&nbsp;<code>10^4</code>.</li><li><code>-10^5 &lt;= node.val &lt;= 10^5</code></li></ol>



<h2><strong>Solution: HashTable</strong></h2>



<p>Use a hash table / array to store the level sum.</p>



<p>Time complexity: O(n)<br>Space complexity: O(h)</p>



<div class="responsive-tabs">
<h2 class="tabtitle">C++</h2>
<div class="tabcontent">

<pre class="crayon-plain-tag">// Author: Huahua, 232 ms, 70.2 ms
class Solution {
public:
  int maxLevelSum(TreeNode* root) {
    vector&lt;int&gt; sums;
    
    function&lt;void(TreeNode*, int)&gt; preorder = [&amp;](TreeNode* n, int d) {
      if (!n) return;
      while (sums.size() &lt;= d) sums.push_back(0);
      sums[d] += n-&gt;val;
      preorder(n-&gt;left, d + 1);
      preorder(n-&gt;right, d + 1);
    };
    preorder(root, 1);
    
    int max_sum = sums[1];
    int ans = 1;
    for (int i = 2; i &lt; sums.size(); ++i)
      if (sums[i] &gt; max_sum) {
        max_sum = sums[i];
        ans = i;        
      }
    return ans;
  }
};</pre>
</div></div>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-1161-maximum-level-sum-of-a-binary-tree/">花花酱 LeetCode 1161. Maximum Level Sum of a Binary 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-1161-maximum-level-sum-of-a-binary-tree/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>
	</channel>
</rss>
