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