题意:
翻转一棵二叉树。
先明白题意:
翻转意思是将当前左右子树交换,然后将当前左右子树的左右节点也交换(递归交换)
思路:
1.先判断是否为空,是返回null
2.将当前左右子树节点交换(交换的基本操作)
3.将当前节点的左右子树递归交换
4.返回root
Java代码实现:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) return null; //判空
TreeNode tmp = root.right; //基本操作
root.right = root.left;
root.left = tmp;
invertTree(root.right); //递归交换当前节点的左右子树
invertTree(root.left);
return root;
}
}