![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode题解
文章平均质量分 55
算法刷题的一些思路
俯首之间
清澈明朗,积极向上
展开
-
Leetcode刷题之——剑指 Offer 27. 二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]方法1、递归递归三要素:终止条件:当root==null的时候return null返回值:显然是返回二叉树的镜像的根节点函数的意义:函数实参是一个二叉树的根节点,中间语句是构建其镜像,然后返回根节点那么就是说,mirrorTree(root.left)是左子树的镜像,mirrorTree(roo.right)是右子树的镜像,然后原创 2021-06-09 10:27:34 · 165 阅读 · 0 评论 -
Leetcode刷题之——965. 单值二叉树
题目:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例:输入:[1,1,1,1,1,null,1]输出:true算法分析:感觉这道题白给。。使用递归:递归三要素:1、终止条件:当root==null时return true2、返回值:显然返回的是该树是否为单值树,即返回布尔类型3、函数的意义:判断是否为单值树那么,如果一颗树的左子树和右子树有一个不为单值树,那该树肯定不为单值树,也即需满足,根节原创 2021-06-08 12:32:02 · 152 阅读 · 0 评论 -
Leetcode刷题之——543. 二叉树的直径
题目:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。其实这道题和这道题有点类似且听我慢慢道来:算法分析:很显然,这道题用递归求解。无非就是求每个节点的左节点深度和右节点深度和,然后比较大小求最大值!以图示为例:节点1:左子树高度为2,右子树高度1,所以和为2+原创 2021-06-08 12:11:54 · 118 阅读 · 0 评论 -
Leetcode刷题之——1104. 二叉树寻路
题目:在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。示例 1:输入:label = 14输出:[1,3,4,14]示例 2:输入:label = 26输出:[1,原创 2021-06-08 11:47:54 · 1060 阅读 · 0 评论 -
Leetcode刷题之——563. 二叉树的坡度
题目:给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树 的坡度就是其所有节点的坡度之和。示例 1:输入:root = [1,2,3]输出:1解释:节点 2 的坡度:|0-0| = 0(没有子节点)节点 3 的坡度:|0-0| = 0(没有子节点)节点 1 的坡度:|2-3| = 1(左子树就是左子节点,所以和是原创 2021-06-08 10:47:01 · 173 阅读 · 0 评论 -
Leetcode刷题之——剑指 Offer 28. 对称的二叉树
题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。方法:使用DFS先序遍历自顶向下题目要求判断二叉树是否镜像对称,那么我们可以得出一个结论,那就是判断根节点的两个子树是对称的,也即左子树的左子节点值应该等于右子树的右子节点,左子树的右子节点值应该等于右子树的左子节点。自上往下以此遍历,二叉树均满足这个条件则表示该树为对称的!算法分析:终止条件:左子树和右子树均为空,return true原创 2021-06-07 18:03:39 · 157 阅读 · 0 评论 -
Leetcode刷题之——剑指 Offer 55 - II. 平衡二叉树
题目:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回 false 。方法一:先序遍历 + 判断深度 (从顶至底)一棵平衡二叉树的定义条件是,任意节点的左右子树的深度相差不超过1,也就是说一棵树是否是平衡树,那就要判断任意点的左右子树均为平衡二叉树且对应的高度差不超过1算法分析:abs(self.depth(root.left) - sel原创 2021-06-07 15:41:20 · 74 阅读 · 0 评论 -
Leetcode刷题之——剑指 Offer 55 - I. 二叉树的深度
题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。树的遍历方式总体分为两类:深度优先搜索(DFS)和广度优先搜索(BFS)常见的DFS:先序遍历、中序遍历、后序遍历常见的BFS:层序遍历求树的深度需要遍历树的所有节点,本文将介绍基于后序遍历DFS和层序遍历BFS方法一:后序遍历DFS树的后序遍历/DFS往往采用递归原创 2021-06-07 13:44:30 · 95 阅读 · 0 评论