Skip to content

Commit f7d6e9c

Browse files
committed
solve problem Add One Row To Tree
1 parent 280f0f8 commit f7d6e9c

File tree

5 files changed

+144
-0
lines changed

5 files changed

+144
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ All solutions will be accepted!
294294
|153|[Find Minimum In Rotated Sorted Array](https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/description/)|[java/py/js](./algorithms/FindMinimumInRotatedSortedArray)|Medium|
295295
|34|[Find First And Last Position Of Element In Sorted Array](https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/description/)|[java/py/js](./algorithms/FindFirstAndLastPositionOfElementInSortedArray)|Medium|
296296
|75|[Sort Colors](https://leetcode-cn.com/problems/sort-colors/description/)|[java/py/js](./algorithms/SortColors)|Medium|
297+
|623|[Add One Row To Tree](https://leetcode-cn.com/problems/add-one-row-to-tree/description/)|[java/py/js](./algorithms/AddOneRowToTree)|Medium|
297298

298299
# Database
299300
|#|Title|Solution|Difficulty|

algorithms/AddOneRowToTree/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Add One Row To Tree
2+
This problem is easy to solve by BFS
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
class Solution {
11+
public TreeNode addOneRow(TreeNode root, int v, int d) {
12+
if (d == 1) {
13+
TreeNode node = new TreeNode(v);
14+
node.left = root;
15+
return node;
16+
}
17+
18+
int depth = 1;
19+
LinkedList<TreeNode> stack = new LinkedList<TreeNode>(),
20+
nextStack = new LinkedList<TreeNode>();
21+
stack.push(root);
22+
23+
while (depth < d - 1) {
24+
TreeNode node = stack.pop();
25+
if (node.left != null)
26+
nextStack.push(node.left);
27+
if (node.right != null)
28+
nextStack.push(node.right);
29+
if (stack.size() == 0) {
30+
stack = nextStack;
31+
nextStack = new LinkedList<TreeNode>();
32+
depth++;
33+
}
34+
}
35+
36+
while (stack.size() > 0) {
37+
TreeNode node = stack.pop(),
38+
left = new TreeNode(v),
39+
right = new TreeNode(v);
40+
left.left = node.left;
41+
node.left = left;
42+
right.right = node.right;
43+
node.right = right;
44+
}
45+
46+
return root;
47+
}
48+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val) {
4+
* this.val = val;
5+
* this.left = this.right = null;
6+
* }
7+
*/
8+
/**
9+
* @param {TreeNode} root
10+
* @param {number} v
11+
* @param {number} d
12+
* @return {TreeNode}
13+
*/
14+
var addOneRow = function(root, v, d) {
15+
if (d == 1) {
16+
let node = new TreeNode(v)
17+
node.left = root
18+
return node
19+
}
20+
21+
let depth = 1,
22+
stack = [ root ],
23+
nextStack = []
24+
25+
while (depth < d - 1) {
26+
let node = stack.pop()
27+
if (node.left)
28+
nextStack.push(node.left)
29+
if (node.right)
30+
nextStack.push(node.right)
31+
if (stack.length == 0) {
32+
stack = nextStack
33+
nextStack = []
34+
depth++
35+
}
36+
}
37+
38+
while (stack.length > 0) {
39+
let node = stack.pop(),
40+
left = new TreeNode(v),
41+
right = new TreeNode(v)
42+
left.left = node.left
43+
node.left = left
44+
right.right = node.right
45+
node.right = right
46+
}
47+
48+
return root
49+
};
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution(object):
9+
def addOneRow(self, root, v, d):
10+
"""
11+
:type root: TreeNode
12+
:type v: int
13+
:type d: int
14+
:rtype: TreeNode
15+
"""
16+
if d == 1:
17+
node = TreeNode(v)
18+
node.left = root
19+
return node
20+
21+
depth = 1
22+
stack = [ root ]
23+
next_stack = []
24+
while depth < d - 1:
25+
node = stack.pop()
26+
if node.left:
27+
next_stack.append(node.left)
28+
if node.right:
29+
next_stack.append(node.right)
30+
if len(stack) == 0:
31+
stack = next_stack
32+
next_stack = []
33+
depth += 1
34+
35+
while len(stack) > 0:
36+
node = stack.pop()
37+
left = TreeNode(v)
38+
left.left = node.left
39+
node.left = left
40+
right = TreeNode(v)
41+
right.right = node.right
42+
node.right = right
43+
44+
return root

0 commit comments

Comments
 (0)