File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ // Definition for a binary tree node.
2+ #[ derive( Debug , PartialEq , Eq ) ]
3+ pub struct TreeNode {
4+ pub val : i32 ,
5+ pub left : Option < Rc < RefCell < TreeNode > > > ,
6+ pub right : Option < Rc < RefCell < TreeNode > > > ,
7+ }
8+
9+ use std:: rc:: Rc ;
10+ use std:: cell:: RefCell ;
11+
12+ // TC: O(n)
13+ // SC: O(n)
14+ impl Solution {
15+ pub fn invert_tree ( root : Option < Rc < RefCell < TreeNode > > > ) -> Option < Rc < RefCell < TreeNode > > > {
16+ if let Some ( node) = root. as_ref ( ) {
17+ let left = node. borrow ( ) . left . clone ( ) ;
18+ let right = node. borrow ( ) . right . clone ( ) ;
19+
20+ node. borrow_mut ( ) . left = Solution :: invert_tree ( right) ;
21+ node. borrow_mut ( ) . right = Solution :: invert_tree ( left) ;
22+ }
23+ root
24+ }
25+ }
Original file line number Diff line number Diff line change 1+ /*
2+ * 시간 복잡도: O(1)
3+ * 공간 복잡도: O(1)
4+ */
5+ public class Solution {
6+ public TreeNode invertTree (TreeNode root ) {
7+ if (root == null ) {
8+ return null ;
9+ }
10+
11+ Queue <TreeNode > queue = new LinkedList <>();
12+ queue .offer (root );
13+
14+ while (!queue .isEmpty ()) {
15+ TreeNode cur = queue .poll ();
16+
17+ TreeNode temp = cur .left ;
18+ cur .left = cur .right ;
19+ cur .right = temp ;
20+
21+ if (cur .left != null ) {
22+ queue .offer (cur .left );
23+ }
24+
25+ if (cur .right != null ) {
26+ queue .offer (cur .right );
27+ }
28+ }
29+
30+ return root ;
31+ }
32+ }
You can’t perform that action at this time.
0 commit comments