题目概览给你一棵二叉树的根节点root翻转这棵二叉树并返回其根节点。示例 1输入root [4,2,7,1,3,6,9]输出[4,7,2,9,6,3,1]示例 2输入root [2,1,3]输出[2,3,1]示例 3输入root []输出[]提示树中节点数目范围在[0, 100]内-100 Node.val 100来源226. 翻转二叉树 - 力扣LeetCode解题分析方法一递归直接交换左右两边节点即可左右节点的翻转再调用当前方法翻转即可当节点为 null 时终止。时间复杂度O(n)空间复杂度O(n)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public TreeNode invertTree(TreeNode root) { if (root null) { return root; } TreeNode left invertTree(root.left); TreeNode right invertTree(root.right); root.left right; root.right left; return root; } }方法二迭代用队列或栈都可以用来存储根节点每次出队列时交换左右节点然后将左右节点入队列直到队列为空。时间复杂度O(n)空间复杂度O(n)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public TreeNode invertTree(TreeNode root) { if (root null) { return root; } QueueTreeNode queue new LinkedList(); queue.offer(root); while(!queue.isEmpty()) { TreeNode node queue.poll(); TreeNode temp node.left; node.left node.right; node.right temp; if (node.left ! null) { queue.offer(node.left); } if (node.right ! null) { queue.offer(node.right); } } return root; } }