226.翻转二叉树
This commit is contained in:
parent
a82ba4fb75
commit
bd02130ba1
|
@ -43,6 +43,7 @@ mod q0198;
|
|||
mod q0206;
|
||||
mod q0213;
|
||||
mod q0220;
|
||||
mod q0226;
|
||||
mod q0231;
|
||||
mod q0258;
|
||||
mod q0263;
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
use crate::Solution;
|
||||
use std::rc::Rc;
|
||||
use std::cell::RefCell;
|
||||
use crate::structure::TreeNode;
|
||||
|
||||
impl Solution {
|
||||
/// [226.翻转二叉树](https://leetcode-cn.com/problems/invert-binary-tree/)
|
||||
///
|
||||
/// 2022-02-08 13:35:42
|
||||
///
|
||||
/// 给你一棵二叉树的根节点 `root` ,翻转这棵二叉树,并返回其根节点。
|
||||
///
|
||||
/// **示例 1:**
|
||||
///
|
||||
/// ![](https://assets.leetcode.com/uploads/2021/03/14/invert1-tree.jpg)
|
||||
///
|
||||
/// **输入:** root = \[4,2,7,1,3,6,9\]
|
||||
/// **输出:** \[4,7,2,9,6,3,1\]
|
||||
///
|
||||
/// **示例 2:**
|
||||
///
|
||||
/// ![](https://assets.leetcode.com/uploads/2021/03/14/invert2-tree.jpg)
|
||||
///
|
||||
/// **输入:** root = \[2,1,3\]
|
||||
/// **输出:** \[2,3,1\]
|
||||
///
|
||||
/// **示例 3:**
|
||||
///
|
||||
/// **输入:** root = \[\]
|
||||
/// **输出:** \[\]
|
||||
///
|
||||
/// **提示:**
|
||||
///
|
||||
/// * 树中节点数目范围在 `[0, 100]` 内
|
||||
/// * `-100 <= Node.val <= 100`
|
||||
///
|
||||
/// Related Topics
|
||||
///
|
||||
/// * 树
|
||||
/// * 深度优先搜索
|
||||
/// * 广度优先搜索
|
||||
/// * 二叉树
|
||||
///
|
||||
/// * 👍 1165
|
||||
/// * 👎 0
|
||||
pub fn invert_tree(root: Option<Rc<RefCell<TreeNode>>>) -> Option<Rc<RefCell<TreeNode>>> {
|
||||
match root {
|
||||
Some(node) => {
|
||||
let mut p = node.borrow_mut();
|
||||
Some(Rc::new(RefCell::new(TreeNode { val: p.val, left: Self::invert_tree(p.right.take()), right: Self::invert_tree(p.left.take()) })))
|
||||
}
|
||||
_ => None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::Solution;
|
||||
use crate::structure::TreeNode;
|
||||
use std::rc::Rc;
|
||||
use std::cell::RefCell;
|
||||
|
||||
#[test]
|
||||
fn test_q0226() {
|
||||
let tree = Some(Rc::new(RefCell::new(TreeNode {
|
||||
val: 1,
|
||||
left: None,
|
||||
right: Some(Rc::new(RefCell::new(TreeNode {
|
||||
val: 2,
|
||||
left: Some(Rc::new(RefCell::new(TreeNode::new(3)))),
|
||||
right: None,
|
||||
}))),
|
||||
})));
|
||||
let tree_inv = Some(Rc::new(RefCell::new(TreeNode {
|
||||
val: 1,
|
||||
left: Some(Rc::new(RefCell::new(TreeNode {
|
||||
val: 2,
|
||||
left: None,
|
||||
right: Some(Rc::new(RefCell::new(TreeNode::new(3)))),
|
||||
}))),
|
||||
right: None,
|
||||
})));
|
||||
let ans = Solution::invert_tree(tree);
|
||||
assert_eq!(ans, tree_inv);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue