二叉树——翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
翻转二叉树就是把每个节点的左右子树交换,递归实现非常简洁。
核心思路
- 根节点为空,直接返回
- 交换当前节点的左孩子和右孩子
- 递归处理左子树
- 递归处理右子树
- 最后返回根节点
完整代码实现如下:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution {
public TreeNode invertTree(TreeNode root) {
// 递归终止条件:节点为空
if (root == null) {
return null;
}
// 交换左右子树
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
// 递归翻转左、右子树
invertTree(root.left);
invertTree(root.right);
// 返回根节点
return root;
}
}
浙公网安备 33010602011771号