1
+ // Runtime: 30 ms (Top 73.79%) | Memory: 22.7 MB (Top 36.12%)
1
2
/* *
2
3
* Definition for a binary tree node.
3
4
* 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) {}
5
+ * int val;
6
+ * TreeNode *left;
7
+ * TreeNode *right;
8
+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
9
+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
10
+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10
11
* };
11
12
*/
12
13
class CBTInserter {
13
14
public:
14
15
vector<TreeNode*> arr;
15
-
16
+
16
17
CBTInserter (TreeNode* root) {
17
-
18
+
18
19
arr.push_back (root);
19
20
queue<TreeNode*> q;
20
21
q.push (root);
21
22
while (!q.empty ()){
22
-
23
+
23
24
if (q.front () -> left != NULL ){
24
25
arr.push_back (q.front () -> left);
25
26
q.push (q.front () -> left);
@@ -29,20 +30,20 @@ class CBTInserter {
29
30
q.push (q.front () -> right);
30
31
}
31
32
q.pop ();
32
-
33
+
33
34
}
34
35
}
35
-
36
+
36
37
int insert (int val) {
37
-
38
+
38
39
TreeNode* new_node = new TreeNode (val);
39
40
arr.push_back (new_node);
40
- int parent_index = (arr.size ()-2 )/2 ;
41
+ int parent_index = (arr.size ()-2 )/2 ;
41
42
if (2 *parent_index +1 == arr.size ()-1 ){arr[parent_index] -> left = new_node;}
42
43
else {arr[parent_index] -> right = new_node;}
43
44
return arr[parent_index] -> val;
44
45
}
45
-
46
+
46
47
TreeNode* get_root () {
47
48
return arr[0 ];
48
49
}
@@ -53,4 +54,4 @@ class CBTInserter {
53
54
* CBTInserter* obj = new CBTInserter(root);
54
55
* int param_1 = obj->insert(val);
55
56
* TreeNode* param_2 = obj->get_root();
56
- */
57
+ */
0 commit comments