31, 226. 翻转二叉树
https://leetcode-cn.com/problems/invert-binary-tree/
思路1: 前序遍历
思路2: 后序遍历
package com.shangguigu.dachang.algrithm.A09_tree;
/**
* @author : 不二
* @date : 2022/4/20-下午9:17
* @desc : 226. 翻转二叉树
* https://leetcode-cn.com/problems/invert-binary-tree/
*
*
**/
public class A95_invertTree {
public static void main(String[] args) {
TreeNode tn1 = new TreeNode(4);
TreeNode tn2 = new TreeNode(2);
TreeNode tn3 = new TreeNode(7);
TreeNode tn4 = new TreeNode(1);
TreeNode tn5 = new TreeNode(3);
TreeNode tn6 = new TreeNode(6);
TreeNode tn7 = new TreeNode(9);
tn1.left = tn2;
tn1.right = tn3;
tn2.left = tn4;
tn2.right = tn5;
tn3.left = tn6;
tn3.right = tn7;
// TreeNode result = invertTree_v1(tn1);
TreeNode result = invertTree_v2(tn1);
System.out.println(result.val);
// System.out.println(A04_levelOrder.levelOrder(result));;
}
/**
* 思路2:
* 后序遍历
* @param root
* @return
*/
public static TreeNode invertTree_v2(TreeNode root) {
if (root == null) {
return null;
}
TreeNode left = invertTree_v2(root.left);
TreeNode right = invertTree_v2(root.right);
root.left = right;
root.right = left;
return root;
}
/**
* 思路1:前序遍历
*
* 这个交换太妙了啊
* @param root
* @return
*/
public static TreeNode invertTree_v1(TreeNode root) {
if (root == null) {
return null;
}
TreeNode temp = root.right;
root.right = root.left;
root.left = temp;
invertTree_v1(root.left);
invertTree_v1(root.right);
return root;
}
}