前言
刷题专栏到目前已经是第十二篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天来看的这道题,没错,依然是二叉树的题目。
《翻转二叉树》,是一道简单类型的题目,也很容易理解。
来一起学习一下吧。
算法题:翻转二叉树
从题目的标题,我们就能看得出来,这是一道二叉树的题目。
而且可以知道,最后的结果就是要将给出的二叉树题目进行翻转后的新二叉树。
这里你可以是原来的二叉树的基础上进行改造,也可以是给一个新二叉树赋值。
接着我们想一下,二叉树应该如何处理呢?
如果你关注了我的刷题专栏,就会知道处理二叉树,肯定就是使用递归最容易了。
所以这里如果使用递归要如何处理呢。
这里给出我的思路。
首先可以先通过递归进行读取二叉树。
在读取二叉树的同时,将每个节点下的左右两个子节点进行调换。
这样就可以在原有二叉树的基础上完成改造。
最后也就返回原二叉树即可。
代码展示
代码执行如下,采用递归,在原二叉树基础上改造的方式。
/** * 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 left = invertTree(root.left); TreeNode right = invertTree(root.right); root.left = right; root.right = left; return root; } }
代码执行结果
今天的代码执行结果还是比较满意的,一般能达到这个成绩,就证明这个解法是妥当的。
总结
今天的这道题主要就是要理解题意,没有什么难度,只要你对二叉树有足够的了解,甚至是初步的了解,就可以解题成功。