思路
首先判断root是否为null
如果为null 返回null
如果不为null 执行preOrder函数
将root节点的左右子节点交换位置
例子
1
2 3
4 5 6 7
1的左右子节点交换位置后 为
1
3 2
6 7 4 5
此时3的子节点6,7需要交换位置;2的子节点也需要。
此时 需要依次判断1的左右子节点3,2是否为空,当不为空时,将左右子节点作为参数调用preOrder函数
解法
class Solution {
public TreeNode invertTree(TreeNode root) {
//root为空,返回
if(root == null){
return root;
}
//root不为空 执行preOrder(root)方法
else {
preOrder(root);
return root;
}
}
public void preOrder(TreeNode root){
//该节点的左右子节点交换
TreeNode left = root.left;
root.left = root.right;
root.right = left;
//如果左子节点不为null 递归调用
if(root.left != null){
preOrder(root.left);
}
//如果右子节点不为null 递归调用
if(root.right != null){
preOrder(root.right);
}
}
}