思路:
对于当前节点来说就是我的左右子树交换,然后进行递归即可。代码如下:
public TreeNode invertTree(TreeNode root) {
if (root==null){
return null;
}
TreeNode temp=root.left;
root.left=invertTree(root.right);
root.right=invertTree(temp);
return root;
}
第二种方式非递归方式:
采用层序遍历,每个节点的左右子树交换
public TreeNode invertTree(TreeNode root) {
if (root==null){
return null;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
TreeNode right = node.right;
node.right=node.left;
node.left=right;
if (node.left != null) {
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
}
return root;
}