来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
首先要明白二叉树的遍历:先序,中序,后序遍历。
先序:根左右
中序:左根右
后序:左右根
二叉树的构造:
java
class TreeNode {
int val;
//左子树
TreeNode left;
//右子树
TreeNode right;
//构造方法
TreeNode(int x) {
val = x;
}
}
先序遍历:
public static void recursionPreorder(TreeNode root){
if ( root != null){
system.out.print( val + " ");
recursionPreorder(root.left);
recursionPreorder(root.right);
}
}
中序遍历:
public static void recursionMidlleorder(TreeNode root){
if( root != null){
recursionMidlleorder(root.left);
system.out.print( val + " ");
recursionMiddleorder(root.right);
}
}
后序遍历:
public static void recursionPostorder(TreeNode root){
if( root != null){
recursionMidlleorder(root.left);
recursionMiddleorder(root.right);
system.out.print( val + " ");
}
}
解题方法:
class Solution {
public TreeNode invertTree(TreeNode root) {
if (root==null) {
return root;
//遍历到最底层
} else {
//展示保留左边,进行左右交换
TreeNode treeNode = root.left;
root.left = root.right;
root.right = treeNode;
//递归
root.right =invertTree(root.right);
root.left = invertTree(root.left);
}
return root;
}
}