题目描述
翻转一棵二叉树。
运行结果
解题思路
递归翻转左右子树,然后更新左右子树
注意:先保存下左右子树的翻转结果,再分别更新根节点的左右子树(否则出错)
java代码
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode invertTree(TreeNode root) {//后序遍历 if(root==null) return null; TreeNode left=invertTree(root.right); TreeNode right=invertTree(root.left); root.left=left; root.right=right; return root; } } class Solution { public TreeNode invertTree(TreeNode root) {//前序遍历 if(root==null) return null; TreeNode tmp=root.left; root.left=root.right; root.right=tmp; invertTree(root.right); invertTree(root.left); return root; } }