Skip to content

Commit

Permalink
chlng 9
Browse files Browse the repository at this point in the history
  • Loading branch information
YuriSpiridonov committed Mar 9, 2021
1 parent ace2c6a commit 62bfe41
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 3 deletions.
1 change: 1 addition & 0 deletions Challenges/2021/March-LeetCoding-Challenge.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ None
||Title|Solution|Difficulty|
| ----: | --- | --- | --- |
|1332.|[Remove Palindromic Subsequences](https://leetcode.com/problems/remove-palindromic-subsequences/)|[Python](/Easy/1332.RemovePalindromicSubsequences.py)|Easy|
|623.|[Add One Row to Tree](https://leetcode.com/problems/add-one-row-to-tree/)|[Python](/Medium/623.AddOneRowtoTree.py)|Medium|

## License
The code is open-source and licensed under the [MIT License](/LICENSE).
111 changes: 111 additions & 0 deletions Medium/623.AddOneRowtoTree.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
'''
Given the root of a binary tree, then value v and depth
d, you need to add a row of nodes with value v at the
given depth d. The root node is at depth 1.
The adding rule is: given a positive integer depth d,
for each NOT null tree nodes N in depth d-1, create two
tree nodes with value v as N's left subtree root and
right subtree root. And N's original left subtree should
be the left subtree of the new left subtree root, its
original right subtree should be the right subtree of
the new right subtree root. If depth d is 1 that means
there is no depth d-1 at all, then create a tree node
with value v as the new root of the whole original tree,
and the original tree is the new root's left subtree.
Example:
Input:
A binary tree as following:
4
/ \
2 6
/ \ /
3 1 5
v = 1
d = 2
Output:
4
/ \
1 1
/ \
2 6
/ \ /
3 1 5
Example:
Input:
A binary tree as following:
4
/
2
/ \
3 1
v = 1
d = 3
Output:
4
/
2
/ \
1 1
/ \
3 1
Note:
1. The given d is in range [1, maximum depth of the
given tree + 1].
2. The given binary tree has at least one tree node.
'''
#Difficulty: Medium
#109 / 109 test cases passed.
#Runtime: 56 ms
#Memory Usage: 16.2 MB

#Runtime: 56 ms, faster than 64.46% of Python3 online submissions for Add One Row to Tree.
#Memory Usage: 16.2 MB, less than 79.05% of Python3 online submissions for Add One Row to Tree.

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right

class Solution:
def addOneRow(self, root: TreeNode, v: int, d: int) -> TreeNode:
depth = 1
queue = [root]

if depth == d:
left = root
root = TreeNode(v)
root.left = left

while queue or depth <= d:
length = len(queue)
depth += 1
while length:
length -= 1
node = queue.pop(0)
if node:
queue.append(node.left)
queue.append(node.right)
if depth == d and node:
left = node.left
right = node.right
if left:
node.left = TreeNode(v)
node.left.left = left
if right:
node.right = TreeNode(v)
node.right.right = right
if not node.left:
node.left = TreeNode(v)
if not node.right:
node.right = TreeNode(v)
else:
node = TreeNode(v)
return root
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Python solutions of LeetCode problems.
![Language](https://img.shields.io/badge/language-Python-blue.svg)&nbsp;
![Problems Solved](https://img.shields.io/badge/problems%20solved-518%2F1618-orange)&nbsp;
![Problems Solved](https://img.shields.io/badge/problems%20solved-519%2F1618-orange)&nbsp;
[![License](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)&nbsp;
![Update](https://img.shields.io/badge/update-Daily-brightgreen.svg)&nbsp;
<br><br>
Expand All @@ -21,7 +21,7 @@ In this repository provided my Python solutions of LeetCode problems.
2021:
- [January LeetCoding Challenge](/Challenges/2021/January-LeetCoding-Challenge.md) - 27/31
- [February LeetCoding Challenge](/Challenges/2021/February-LeetCoding-Challenge.md) - 23/28
- [March LeetCoding Challenge](/Challenges/2021/March-LeetCoding-Challenge.md) - 8/31
- [March LeetCoding Challenge](/Challenges/2021/March-LeetCoding-Challenge.md) - 9/31
<br><br>
## Solutions
*P.S. If you like this, please leave me a star.*
Expand Down Expand Up @@ -275,7 +275,8 @@ In this repository provided my Python solutions of LeetCode problems.
|599.|[Minimum Index Sum of Two Lists](https://leetcode.com/problems/minimum-index-sum-of-two-lists/)|[Python](/Easy/599.MinimumIndexSumofTwoLists.py)|Easy|`Dictionary`, `enumerate`|
|605.|[Can Place Flowers](https://leetcode.com/problems/can-place-flowers/)|[Python](/Easy/605.CanPlaceFlowers.py)|Easy|simple counter|
|609.|[Find Duplicate File in System](https://leetcode.com/problems/find-duplicate-file-in-system/)|[Python](/Medium/609.FindDuplicateFileinSystem.py)|Medium|`Dictionary`, nested `for loop`, `list comprehension`|
|622.|[Design Circular Queue](https://leetcode.com/problems/design-circular-queue/)|[Python](https://github.com/YuriSpiridonov/LeetCode/blob/master/Medium/622.DesignCircularQueue.py)|Medium|Implement through `list` (first time)|
|622.|[Design Circular Queue](https://leetcode.com/problems/design-circular-queue/)|[Python](/Medium/622.DesignCircularQueue.py)|Medium|Implement through `list` (first time)|
|623.|[Add One Row to Tree](https://leetcode.com/problems/add-one-row-to-tree/)|[Python](/Medium/623.AddOneRowtoTree.py)|Medium|`BFS`|
|637.|[Average of Levels in Binary Tree](https://leetcode.com/problems/average-of-levels-in-binary-tree/)|[Python](/Easy/637.AverageofLevelsinBinaryTree.py)|Easy|`Binary Tree`, `Recursion`|
|641.|[Design Circular Deque](https://leetcode.com/problems/design-circular-deque/)|[Python](/Medium/641.DesignCircularDeque.py)|Medium|Need to resolve without use of builtin functions (first time)|
|645.|[Set Mismatch](https://leetcode.com/problems/set-mismatch/)|[Python](/Easy/645.SetMismatch.py)|Easy|`collections.Counter`|
Expand Down

0 comments on commit 62bfe41

Please sign in to comment.