226. 翻转二叉树
难度:简单
做简单题快乐加倍
题目描述
解题思路
递归~
1、前序
第一种思路,遇到空返回,如果达到叶子节点返回该节点,递归交换左右子树
/*
* 226. 翻转二叉树
* 2020/6/17
*/
public TreeNode invertTree(TreeNode root) {
if(root == null)
return null;
if(root.left == null && root.right == null)
return root;
TreeNode temp = root.left;
root.left = invertTree(root.right);
root.right = invertTree(temp);
return root;
}
2、中序
//中序
public TreeNode invertTree(TreeNode root) {
if(root == null)
return null;
invertTree(root.left); //递归找到左节点
TreeNode right = root.right;
root.right = root.left;
root.left = right;
//左右节点已经交换了
invertTree(root.left);
return root;
}
3、后序遍历
//后序 从下往上交换
public TreeNode invertTree(TreeNode root) {
if(root == null)
return null;
TreeNode leftnode = invertTree(root.left); //递归找到左节点
TreeNode rightnode = invertTree(root.right); //递归找到右节点
//交换
root.right = leftnode;
root.left = rightnode;
return root;
}