24128
24128
<ul class="md-nav__list">
24129
24129
24130
24130
<li class="md-nav__item">
24131
- <a href="#solution-1" class="md-nav__link">
24131
+ <a href="#solution-1-recursion " class="md-nav__link">
24132
24132
<span class="md-ellipsis">
24133
- Solution 1
24133
+ Solution 1: Recursion
24134
24134
</span>
24135
24135
</a>
24136
24136
@@ -78044,7 +78044,7 @@ <h2 id="description">Description</h2>
78044
78044
<pre>
78045
78045
<strong>Input:</strong> root = [1,null,0,0,1]
78046
78046
<strong>Output:</strong> [1,null,0,null,1]
78047
- <strong>Explanation:</strong>
78047
+ <strong>Explanation:</strong>
78048
78048
Only the red nodes satisfy the property "every subtree not containing a 1".
78049
78049
The diagram on the right represents the answer.
78050
78050
</pre>
@@ -78076,7 +78076,10 @@ <h2 id="description">Description</h2>
78076
78076
<h2 id="solutions">Solutions</h2>
78077
78077
<!-- solution:start -->
78078
78078
78079
- <h3 id="solution-1">Solution 1</h3>
78079
+ <h3 id="solution-1-recursion">Solution 1: Recursion</h3>
78080
+ <p>First, we check if the current node is null. If it is, we directly return the null node.</p>
78081
+ <p>Otherwise, we recursively prune the left and right subtrees and reassign the pruned subtrees to the current node's left and right children. Then, we check if the current node's value is 0 and both its left and right children are null. If so, we return the null node; otherwise, we return the current node.</p>
78082
+ <p>Time complexity is $O(n)$, and space complexity is $O(n)$. Here, $n$ is the number of nodes in the binary tree.</p>
78080
78083
<div class="tabbed-set tabbed-alternate" data-tabs="1:7"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">Rust</label><label for="__tabbed_1_7">JavaScript</label></div>
78081
78084
<div class="tabbed-content">
78082
78085
<div class="tabbed-block">
@@ -78103,10 +78106,10 @@ <h3 id="solution-1">Solution 1</h3>
78103
78106
<span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
78104
78107
<span class="k">def</span> <span class="nf">pruneTree</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">root</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">TreeNode</span><span class="p">])</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">TreeNode</span><span class="p">]:</span>
78105
78108
<span class="k">if</span> <span class="n">root</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
78106
- <span class="k">return</span> <span class="kc">None </span>
78109
+ <span class="k">return</span> <span class="n">root </span>
78107
78110
<span class="n">root</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pruneTree</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">left</span><span class="p">)</span>
78108
78111
<span class="n">root</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pruneTree</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">right</span><span class="p">)</span>
78109
- <span class="k">if</span> <span class="n">root</span><span class="o">.</span><span class="n">val</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">root</span><span class="o">.</span><span class="n">left</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and </span> <span class="n">root</span><span class="o">.</span><span class="n">right</span> <span class="ow">is</span> <span class="kc">None </span><span class="p">:</span>
78112
+ <span class="k">if</span> <span class="n">root</span><span class="o">.</span><span class="n">val</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">root</span><span class="o">.</span><span class="n">left</span> <span class="o">== </span> <span class="n">root</span><span class="o">.</span><span class="n">right</span><span class="p">:</span>
78110
78113
<span class="k">return</span> <span class="kc">None</span>
78111
78114
<span class="k">return</span> <span class="n">root</span>
78112
78115
</code></pre></div></td></tr></table></div>
@@ -78190,7 +78193,11 @@ <h3 id="solution-1">Solution 1</h3>
78190
78193
<span class="normal">18</span>
78191
78194
<span class="normal">19</span>
78192
78195
<span class="normal">20</span>
78193
- <span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
78196
+ <span class="normal">21</span>
78197
+ <span class="normal">22</span>
78198
+ <span class="normal">23</span>
78199
+ <span class="normal">24</span>
78200
+ <span class="normal">25</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
78194
78201
<span class="cm"> * Definition for a binary tree node.</span>
78195
78202
<span class="cm"> * struct TreeNode {</span>
78196
78203
<span class="cm"> * int val;</span>
@@ -78204,10 +78211,14 @@ <h3 id="solution-1">Solution 1</h3>
78204
78211
<span class="k">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
78205
78212
<span class="k">public</span><span class="o">:</span>
78206
78213
<span class="w"> </span><span class="n">TreeNode</span><span class="o">*</span><span class="w"> </span><span class="n">pruneTree</span><span class="p">(</span><span class="n">TreeNode</span><span class="o">*</span><span class="w"> </span><span class="n">root</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78207
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">root</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">nullptr</span><span class="p">;</span>
78214
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">root</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78215
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">root</span><span class="p">;</span>
78216
+ <span class="w"> </span><span class="p">}</span>
78208
78217
<span class="w"> </span><span class="n">root</span><span class="o">-></span><span class="n">left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pruneTree</span><span class="p">(</span><span class="n">root</span><span class="o">-></span><span class="n">left</span><span class="p">);</span>
78209
78218
<span class="w"> </span><span class="n">root</span><span class="o">-></span><span class="n">right</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pruneTree</span><span class="p">(</span><span class="n">root</span><span class="o">-></span><span class="n">right</span><span class="p">);</span>
78210
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">root</span><span class="o">-></span><span class="n">val</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class="n">root</span><span class="o">-></span><span class="n">left</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class="n">root</span><span class="o">-></span><span class="n">right</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">nullptr</span><span class="p">;</span>
78219
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">root</span><span class="o">-></span><span class="n">val</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">root</span><span class="o">-></span><span class="n">left</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">root</span><span class="o">-></span><span class="n">right</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78220
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">nullptr</span><span class="p">;</span>
78221
+ <span class="w"> </span><span class="p">}</span>
78211
78222
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">root</span><span class="p">;</span>
78212
78223
<span class="w"> </span><span class="p">}</span>
78213
78224
<span class="p">};</span>
@@ -78293,12 +78304,12 @@ <h3 id="solution-1">Solution 1</h3>
78293
78304
<span class="cm"> */</span>
78294
78305
78295
78306
<span class="kd">function</span><span class="w"> </span><span class="nx">pruneTree</span><span class="p">(</span><span class="nx">root</span><span class="o">:</span><span class="w"> </span><span class="kt">TreeNode</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="nx">TreeNode</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="p">{</span>
78296
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">root</span><span class="w"> </span><span class=" o">== </span><span class="w"> </span><span class="kc">null </span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78307
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">! </span><span class="nx">root </span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78297
78308
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">root</span><span class="p">;</span>
78298
78309
<span class="w"> </span><span class="p">}</span>
78299
78310
<span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">pruneTree</span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">left</span><span class="p">);</span>
78300
78311
<span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">right</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">pruneTree</span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">right</span><span class="p">);</span>
78301
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">val</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null</span><span class=" w"> </span><span class="o">&&</span><span class="w"> </span><span class=" nx">root</span><span class="p">.</span><span class="nx">right</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null </span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78312
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">val</span><span class="w"> </span><span class="o">=== </span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">=== </span><span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">right</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78302
78313
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
78303
78314
<span class="w"> </span><span class="p">}</span>
78304
78315
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">root</span><span class="p">;</span>
@@ -78404,7 +78415,9 @@ <h3 id="solution-1">Solution 1</h3>
78404
78415
<span class="normal">18</span>
78405
78416
<span class="normal">19</span>
78406
78417
<span class="normal">20</span>
78407
- <span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
78418
+ <span class="normal">21</span>
78419
+ <span class="normal">22</span>
78420
+ <span class="normal">23</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
78408
78421
<span class="cm"> * Definition for a binary tree node.</span>
78409
78422
<span class="cm"> * function TreeNode(val, left, right) {</span>
78410
78423
<span class="cm"> * this.val = (val===undefined ? 0 : val)</span>
@@ -78417,10 +78430,12 @@ <h3 id="solution-1">Solution 1</h3>
78417
78430
<span class="cm"> * @return {TreeNode}</span>
78418
78431
<span class="cm"> */</span>
78419
78432
<span class="kd">var</span><span class="w"> </span><span class="nx">pruneTree</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">(</span><span class="nx">root</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78420
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">root</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
78433
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">root</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78434
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">root</span><span class="p">;</span>
78435
+ <span class="w"> </span><span class="p">}</span>
78421
78436
<span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">pruneTree</span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">left</span><span class="p">);</span>
78422
78437
<span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">right</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">pruneTree</span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">right</span><span class="p">);</span>
78423
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">val</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class=" nx">root</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">&& </span><span class="w"> </span><span class="o">! </span><span class="nx">root</span><span class="p">.</span><span class="nx">right</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78438
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">root</span><span class="p">.</span><span class="nx">val</span><span class="w"> </span><span class="o">=== </span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">=== </span><span class="w"> </span><span class="nx">root</span><span class="p">.</span><span class="nx">right</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
78424
78439
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
78425
78440
<span class="w"> </span><span class="p">}</span>
78426
78441
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">root</span><span class="p">;</span>
0 commit comments