翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
先想思路,看题解,对照题解思路一不一样,很一样直接开始写,没思路直接看题解

思路:root 遍历 交换左右子树 左子树先存储到数组 左子树=右子树
java
class Solution {
public TreeNode invertTree(TreeNode root) {
//递归函数的终止条件,节点为空时返回
if(root==null) {
return null;
}
//下面三句是将当前节点的左右子树交换
TreeNode tmp = root.right;
root.right = root.left;
root.left = tmp;
//递归交换当前节点的 左子树
invertTree(root.left);
//递归交换当前节点的 右子树
invertTree(root.right);
//函数返回时就表示当前这个节点,以及它的左右子树
//都已经交换完了
return root;
}
}
作者:王尼玛
链接:https://leetcode.cn/problems/invert-binary-tree/solutions/73159/dong-hua-yan-shi-liang-chong-shi-xian-226-fan-zhua/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



为啥飘红了?
java
import javax.swing.tree.TreeNode;
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
public class Solution2 {
public TreeNode invertTree(TreeNode root) {
// 定义数组,存储节点 注释
//从最底层节点考虑 如果遍历到最底层 位空 返回空
if(root==null){
return null;
}
//定义多个 存储任意字符元素的数组 注释
//交换 当前节点 根左右交换
//
TreeNode tmp=root.right;//错误 定义tmp 因为 root.right是Treenode格式 所以定义tmp也是Treenode格式
root.right=root.left;
root.left=tmp;
//为啥飘红了?
//再次调用本方法 每个当前节点的左右都进行执行 当前节点的左右节点的左右节点进行交换 一直持续到没有左右节点 返回空 持续到最底层 返回空
//倒数第一层返回本身节点 及底下空
invertTree(root.left);
invertTree(root.right);
return root;//返回当前节点 最后一层的下一层返回空 最后一层返回本节点 及底下空 倒数第二层节点 返回 本节点及左右节点 持续返回i
}
}

测试通过了