题目
题目来源leetcode
leetcode地址:226. 翻转二叉树,难度:简单。
题目描述(摘自leetcode):
翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
题解
NO1:前序遍历+反转左右孩子
思路:使用前序递归遍历二叉树,每遍历一个二叉树节点过程中进行交换该节点的左右孩子,即可最终实现二叉树反转。
代码:
public TreeNode invertTree(TreeNode root) { invertTreeNode(root); return root; } /** * 前序遍历(递归),每遍历到一个元素对其左右孩子进行交换 * @param root 当前节点 */ public void invertTreeNode(TreeNode root){ if( root == null ){ return; }else{ //交换该节点的左右节点 TreeNode temp = root.left; root.left = root.right; root.right = temp; //递归遍历左右节点 invertTree(root.left); invertTree(root.right); } }