<?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>iterative Archives - Huahua&#039;s Tech Road</title>
	<atom:link href="https://zxi.mytechroad.com/blog/tag/iterative/feed/" rel="self" type="application/rss+xml" />
	<link>https://zxi.mytechroad.com/blog/tag/iterative/</link>
	<description></description>
	<lastBuildDate>Sun, 28 Jul 2019 04:43:03 +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>iterative Archives - Huahua&#039;s Tech Road</title>
	<link>https://zxi.mytechroad.com/blog/tag/iterative/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>花花酱 LeetCode 1137. N-th Tribonacci Number</title>
		<link>https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-1137-n-th-tribonacci-number/</link>
					<comments>https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-1137-n-th-tribonacci-number/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Sun, 28 Jul 2019 04:40:09 +0000</pubDate>
				<category><![CDATA[Dynamic Programming]]></category>
		<category><![CDATA[dp]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[iterative]]></category>
		<guid isPermaLink="false">https://zxi.mytechroad.com/blog/?p=5360</guid>

					<description><![CDATA[<p>The Tribonacci sequence Tn&#160;is defined as follows:&#160; T0&#160;= 0, T1&#160;= 1, T2&#160;= 1, and Tn+3&#160;= Tn&#160;+ Tn+1&#160;+ Tn+2&#160;for n &#62;= 0. Given&#160;n, return the value&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-1137-n-th-tribonacci-number/">花花酱 LeetCode 1137. N-th Tribonacci Number</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>The Tribonacci sequence T<sub>n</sub>&nbsp;is defined as follows:&nbsp;</p>



<p>T<sub>0</sub>&nbsp;= 0, T<sub>1</sub>&nbsp;= 1, T<sub>2</sub>&nbsp;= 1, and T<sub>n+3</sub>&nbsp;= T<sub>n</sub>&nbsp;+ T<sub>n+1</sub>&nbsp;+ T<sub>n+2</sub>&nbsp;for n &gt;= 0.</p>



<p>Given&nbsp;<code>n</code>, return the value of T<sub>n</sub>.</p>



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



<pre class="wp-block-preformatted;crayon:false"><strong>Input:</strong> n = 4
<strong>Output:</strong> 4
<strong>Explanation:</strong>
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
</pre>



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



<pre class="wp-block-preformatted;crayon:false"><strong>Input:</strong> n = 25
<strong>Output:</strong> 1389537
</pre>



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



<ul><li><code>0 &lt;= n &lt;= 37</code></li><li>The answer is guaranteed to fit within a 32-bit integer, ie.&nbsp;<code>answer &lt;= 2^31 - 1</code>.</li></ul>



<h2><strong>Solution: DP</strong></h2>



<p>Time complexity: O(n)<br>Space complexity: O(n) -&gt; O(1)</p>



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

<pre class="crayon-plain-tag">// Author: Huahua
class Solution {
public:
  int tribonacci(int n) {
    if (n == 0) return n;
    int t0 = 0;
    int t1 = 1;
    int t2 = 1;
    int t = 1;
    for (int i = 3; i &lt;= n; ++i) {
      t = t0 + t1 + t2;
      t0 = t1;
      t1 = t2;
      t2 = t;
    }
    return t;
  }
};</pre>
</div></div>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-1137-n-th-tribonacci-number/">花花酱 LeetCode 1137. N-th Tribonacci Number</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/dynamic-programming/leetcode-1137-n-th-tribonacci-number/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>花花酱 LeetCode 94. Binary Tree Inorder Traversal</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-94-binary-tree-inorder-traversal/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-94-binary-tree-inorder-traversal/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Fri, 23 Mar 2018 08:08:59 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[iterative]]></category>
		<category><![CDATA[recursion]]></category>
		<guid isPermaLink="false">http://zxi.mytechroad.com/blog/?p=2318</guid>

					<description><![CDATA[<p>Problem Given a binary tree, return the inorder traversal of its nodes&#8217; values. For example: Given binary tree [1,null,2,3], 1 \ 2 / 3 return [1,3,2]. Note: Recursive solution is&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-94-binary-tree-inorder-traversal/">花花酱 LeetCode 94. Binary Tree Inorder 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 a binary tree, return the <i>inorder</i> traversal of its nodes&#8217; values.</p>
<p>For example:<br />
Given binary tree <code>[1,null,2,3]</code>,</p>
<pre class="crayon:false ">   1
    \
     2
    /
   3
</pre>
<p>return <code>[1,3,2]</code>.</p>
<p><b>Note:</b> Recursive solution is trivial, could you do it iteratively?</p>
<h1><strong>Solution: Recursion</strong></h1>
<p>Time complexity: O(n)</p>
<p>Space complexity: O(h)</p>
<p>C++</p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 4 ms
class Solution {
public:
  vector&lt;int&gt; inorderTraversal(TreeNode* root) {    
    vector&lt;int&gt; ans;
    inorderTraversal(root, ans);
    return ans;
  }
private:
  void inorderTraversal(TreeNode* root, vector&lt;int&gt;&amp; ans) {
    if (root == nullptr) return;
    inorderTraversal(root-&gt;left, ans);
    ans.push_back(root-&gt;val);
    inorderTraversal(root-&gt;right, ans);    
  }
};</pre><p></p>
<h1><strong>Solution 2: Iterative</strong></h1>
<p></p><pre class="crayon-plain-tag">// Author: Huahua
// Running time: 3 ms
lass Solution {
public:
  vector&lt;int&gt; inorderTraversal(TreeNode* root) {
    if (root == nullptr) return {};
    vector&lt;int&gt; ans;
    stack&lt;TreeNode*&gt; s;
    TreeNode* curr = root;
    while (curr != nullptr || !s.empty()) {
      while (curr != nullptr) {
        s.push(curr);
        curr = curr-&gt;left;
      }
      curr = s.top(); s.pop();
      ans.push_back(curr-&gt;val);
      curr = curr-&gt;right;
    }    
    return ans;
  }
};</pre><p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-94-binary-tree-inorder-traversal/">花花酱 LeetCode 94. Binary Tree Inorder 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-94-binary-tree-inorder-traversal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>花花酱 LeetCode 145. Binary Tree Postorder Traversal</title>
		<link>https://zxi.mytechroad.com/blog/tree/leetcode-145-binary-tree-postorder-traversal/</link>
					<comments>https://zxi.mytechroad.com/blog/tree/leetcode-145-binary-tree-postorder-traversal/#respond</comments>
		
		<dc:creator><![CDATA[zxi]]></dc:creator>
		<pubDate>Fri, 08 Sep 2017 08:19:18 +0000</pubDate>
				<category><![CDATA[Tree]]></category>
		<category><![CDATA[binary tree]]></category>
		<category><![CDATA[inorder]]></category>
		<category><![CDATA[iterative]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[postorder]]></category>
		<category><![CDATA[preorder]]></category>
		<category><![CDATA[recursive]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[traversal]]></category>
		<guid isPermaLink="false">http://zxi.mytechroad.com/blog/?p=150</guid>

					<description><![CDATA[<p>Problem: Given a binary tree, return the postorder traversal of its nodes&#8217; values. For example: Given binary tree {1,#,2,3}, [crayon-663c79e308877018082414/] return [3,2,1]. Note: Recursive solution is trivial, could you do&#8230;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-145-binary-tree-postorder-traversal/">花花酱 LeetCode 145. Binary 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[<p><iframe width="500" height="375" src="https://www.youtube.com/embed/A6iCX_5xiU4?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<h1><strong>Problem:</strong></h1>
<p>Given a binary tree, return the <i>postorder</i> traversal of its nodes&#8217; values.</p>
<p>For example:<br />
Given binary tree <code>{1,#,2,3}</code>,</p><pre class="crayon-plain-tag">1
    \
     2
    /
   3</pre><p>return <code>[3,2,1]</code>.</p>
<p><b>Note:</b> Recursive solution is trivial, could you do it iteratively?</p>
<p><a href="http://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-1.png"><img class="alignnone size-full wp-image-154" src="http://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-1.png" alt="" width="960" height="540" srcset="https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-1.png 960w, https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-1-300x169.png 300w, https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-1-768x432.png 768w, https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-1-624x351.png 624w" sizes="(max-width: 960px) 100vw, 960px" /></a></p>
<p><a href="http://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-2.png"><img class="alignnone size-full wp-image-153" src="http://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-2.png" alt="" width="960" height="540" srcset="https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-2.png 960w, https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-2-300x169.png 300w, https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-2-768x432.png 768w, https://zxi.mytechroad.com/blog/wp-content/uploads/2017/09/145-ep40-2-624x351.png 624w" sizes="(max-width: 960px) 100vw, 960px" /></a></p>
<h1><strong>Solution 1:</strong></h1>
<p></p><pre class="crayon-plain-tag">// Author: Huahua
class Solution {
public:
    vector&lt;int&gt; postorderTraversal(TreeNode* root) {
        vector&lt;int&gt; ans;        
        postorderTraversal(root, ans);
        return ans;
    }
    
    void postorderTraversal(TreeNode* root, vector&lt;int&gt;&amp; ans) {
        if (!root) return;
        postorderTraversal(root-&gt;left, ans);
        postorderTraversal(root-&gt;right, ans);
        ans.push_back(root-&gt;val);
    }
};</pre><p></p>
<h1><strong>Solution 2:</strong></h1>
<p></p><pre class="crayon-plain-tag">// Author: Huahua
class Solution {
public:
    vector&lt;int&gt; postorderTraversal(TreeNode* root) {
        if (!root) return {};
        vector&lt;int&gt; ans;
        const vector&lt;int&gt; l = postorderTraversal(root-&gt;left);
        const vector&lt;int&gt; r = postorderTraversal(root-&gt;right);
        ans.insert(ans.end(), l.begin(), l.end());
        ans.insert(ans.end(), r.begin(), r.end());
        ans.push_back(root-&gt;val);
        return ans;
    }
};</pre><p></p>
<h1><strong>Solution 3:</strong></h1>
<p></p><pre class="crayon-plain-tag">// Author: Huahua
class Solution {
public:
    vector&lt;int&gt; postorderTraversal(TreeNode* root) {
        if (!root) return {};
        deque&lt;int&gt; ans;
        stack&lt;TreeNode*&gt; s;
        s.push(root);
        while (!s.empty()) {
            TreeNode* n = s.top();
            s.pop();
            ans.push_front(n-&gt;val); // O(1)
            if (n-&gt;left) s.push(n-&gt;left);
            if (n-&gt;right) s.push(n-&gt;right);
        }   
        return vector&lt;int&gt;(ans.begin(), ans.end());
    }
};</pre><p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://zxi.mytechroad.com/blog/tree/leetcode-145-binary-tree-postorder-traversal/">花花酱 LeetCode 145. Binary 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-145-binary-tree-postorder-traversal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
