File tree Expand file tree Collapse file tree 5 files changed +144
-0
lines changed
algorithms/AddOneRowToTree Expand file tree Collapse file tree 5 files changed +144
-0
lines changed Original file line number Diff line number Diff line change @@ -294,6 +294,7 @@ All solutions will be accepted!
294
294
| 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|
295
295
| 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|
296
296
| 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|
297
298
298
299
# Database
299
300
| #| Title| Solution| Difficulty|
Original file line number Diff line number Diff line change
1
+ # Add One Row To Tree
2
+ This problem is easy to solve by BFS
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ } ;
Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments