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. Invert Binary Tree
    出典:LeetCode
    リンク:https ://leetcode-cn.com/problems/invert-binary-tree
    著作権はLeetCode Networkが所有してます。商用転載については、正式な許可書にご連絡ください。非商用転載については、出典を明記してください。

おすすめ

転載: blog.csdn.net/PursueLuo/article/details/108630077