File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * // Definition for a Node.
3
+ * function Node(val) {
4
+ * this.val = val;
5
+ * this.left = null;
6
+ * this.right = null;
7
+ * this.parent = null;
8
+ * };
9
+ */
10
+
11
+ /**
12
+ * @param {Node } node
13
+ * @return {Node }
14
+ */
15
+ const flipBinaryTree = function ( root , leaf ) {
16
+ function flip ( node , from_node ) {
17
+ // set and break pointers between node and from_node
18
+ const p = node . parent
19
+ node . parent = from_node
20
+ if ( node . left === from_node ) node . left = null
21
+ if ( node . right === from_node ) node . right = null
22
+
23
+ // stopping condition
24
+ if ( node === root ) return node
25
+
26
+ // set right child
27
+ if ( node . left ) node . right = node . left
28
+ // set left child
29
+ node . left = flip ( p , node )
30
+ return node
31
+ }
32
+ return flip ( leaf , null )
33
+ } ;
You can’t perform that action at this time.
0 commit comments