题目描述

翻转一棵二叉树。        

示例:     

输入:     

     4
   /   \
  2      7
 / \    / \
1  3   6  9
输出:

     4
   /   \
  7      2
 / \    / \
9  6   3  1

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree                      

                                                         

解题思路

经过观察,把二叉树的左右子节点进行交换,所有子节点递归后,最后的结果就是完全翻转的二叉树。

如果有其他的好方案,欢迎大家留言,一起交流。

参考来源:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-1

                         

解题代码

/**
 * 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;
 *     }
 * }
 */
class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null) {
            return null;
        }
         
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;
         
        invertTree(root.left);   
        invertTree(root.right);    
        return root;    
    }    
}