Skip to content

Commit e83cfde

Browse files
authored
Create change-the-root-of-a-binary-tree.cpp
1 parent 2f77273 commit e83cfde

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Time: O(h)
2+
// Space: O(1)
3+
4+
/*
5+
// Definition for a Node.
6+
class Node {
7+
public:
8+
int val;
9+
Node* left;
10+
Node* right;
11+
Node* parent;
12+
};
13+
*/
14+
15+
class Solution {
16+
public:
17+
Node* flipBinaryTree(Node* root, Node * leaf) {
18+
Node *curr = leaf, *parent = nullptr;
19+
while (true) {
20+
auto child = curr->parent;
21+
curr->parent = parent;
22+
if (curr->left == parent) {
23+
curr->left = nullptr;
24+
} else {
25+
curr->right = nullptr;
26+
}
27+
if (curr == root) {
28+
break;
29+
}
30+
if (curr->left) {
31+
curr->right = curr->left;
32+
}
33+
curr->left = child;
34+
parent = curr, curr = child;
35+
}
36+
return leaf;
37+
}
38+
};

0 commit comments

Comments
 (0)