Skip to content

Commit 125dcfd

Browse files
authored
Merge branch 'DaleStudy:main' into main
2 parents e7b47f0 + f81fb26 commit 125dcfd

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

invert-binary-tree/DaleSeo.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
}

0 commit comments

Comments
 (0)