Skip to content

Commit d678702

Browse files
authored
Create 623. Add One Row to Tree (#458)
2 parents 0bf861b + 84b9be8 commit d678702

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

623. Add One Row to Tree

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
TreeNode* addOneRow(TreeNode* root, int val, int depth) {
15+
if (depth == 1) {
16+
TreeNode* newRoot = new TreeNode(val);
17+
newRoot->left = root;
18+
return newRoot;
19+
}
20+
21+
TreeNode *result = addRow(root, val, depth);
22+
return result;
23+
}
24+
25+
TreeNode* addRow(TreeNode *currentNode, int val, int depth) {
26+
if (currentNode == nullptr)
27+
return currentNode;
28+
29+
if (depth == 2) {
30+
TreeNode *newLeftNode = new TreeNode(val);
31+
TreeNode *newRightNode = new TreeNode(val);
32+
newLeftNode->left = currentNode->left;
33+
newRightNode->right = currentNode->right;
34+
currentNode->left = newLeftNode;
35+
currentNode->right = newRightNode;
36+
return currentNode;
37+
}
38+
39+
currentNode->left = addRow(currentNode->left, val, depth - 1);
40+
currentNode->right = addRow(currentNode->right, val, depth - 1);
41+
return currentNode;
42+
}
43+
};

0 commit comments

Comments
 (0)