题目描述
翻转一棵二叉树。
运行结果
解题思路
递归翻转左右子树,然后更新左右子树
注意:先保存下左右子树的翻转结果,再分别更新根节点的左右子树(否则出错)
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;
}
}
京公网安备 11010502036488号