力扣(LeetCode)- 226 - 翻转二叉树(简单)


1. 描述

翻转一棵二叉树。

2. 示例

输入:
在这里插入图片描述

输出:
在这里插入图片描述

3. 分析

观察输入与输出,以节点“4”作为观察目标,可以看到根节点“4”不变,它的左孩子“2”与右孩子“7”交换了位置,且左孩子“2”所在的左子树与右孩子“7”所在的右子树整体也交换了位置。同样的规律在其他节点也存在。
于是我们得出结论,

翻转二叉树操作包括:
(1)根节点保持不变;
(2)交换左子树与右子树。
(3)翻转左子树;
(4)翻转右子树。

4. 代码

/**
 * 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 root;
        // 根非空的话,交换左右子树
        TreeNode cache = root.left;
        root.left = root.right;
        root.right = cache;
        // 翻转左子树
        invertTree(root.left);
        // 翻转右子树
        invertTree(root.right);
        return root;
    }
}

5. 验证

在这里插入图片描述

6. 出处

  1. LeetCode 226. 翻转二叉树
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/invert-binary-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/PursueLuo/article/details/108630077