解答1:递归
class Solution { public TreeNode invertTree(TreeNode root) { if (root == null) { return null; } TreeNode left = invertTree(root.left); TreeNode right = invertTree(root.right); root.left = right; root.right = left; return root; } }
解答2: 层序遍历
class Solution { public TreeNode invertTree(TreeNode root) { if(root == null) { return null; } Queue<TreeNode> queue = new LinkedList(); queue.offer(root); while(!queue.isEmpty()) { int currentLevelSize = queue.size(); for(int i=0;i<currentLevelSize;i++) { TreeNode treeNode = queue.poll(); if(treeNode.left != null) { queue.offer(treeNode.left); } if(treeNode.right != null) { queue.offer(treeNode.right); } TreeNode left = treeNode.left; treeNode.left = treeNode.right; treeNode.right = left; } } return root; } }