每天1题算法题(9)- 翻转二叉树

解答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;
    }
}
原文地址:https://www.cnblogs.com/s648667069/p/13746659.html