题目链接Leetcode.993二叉树的堂兄弟节点Rating:1288题目描述在二叉树中,根节点位于深度0处,每个深度为k的节点的子节点位于深度k+1处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点root,以及树中两个不同节点的值x和y。只有与值x和y对应的节点是堂兄弟节点时,才返回true。否则,返回false。示例1:输入:root=[1,2,3,4],x=4,y=3输出:false示例2:输入:root=[1,2,3,null,4,null,5],x=5,y=4输出:true示例3:输入:root=[1,2,3,null,4
题目链接Leetcode.993二叉树的堂兄弟节点Rating:1288题目描述在二叉树中,根节点位于深度0处,每个深度为k的节点的子节点位于深度k+1处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点root,以及树中两个不同节点的值x和y。只有与值x和y对应的节点是堂兄弟节点时,才返回true。否则,返回false。示例1:输入:root=[1,2,3,4],x=4,y=3输出:false示例2:输入:root=[1,2,3,null,4,null,5],x=5,y=4输出:true示例3:输入:root=[1,2,3,null,4
第一题:单值二叉树题目介绍:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。//题目框架boolisUnivalTree(structTreeNode*root){}问题分析:很多老铁看到这道题,一上来会选择直接遍历二叉树来试图解决这道题。当然遍历固然可行,这道题使用二叉树的前中后遍历的方式来解决,虽然实现的过程存在一定的差异,但都能做出来。这里给出前序遍历的实现,以便参考。前序遍历,无非是先判断根节点,在判断左右子树。根节点的值不一样,返回false,左右子树中任何一方存在节点的值不一样都返回false。boolP
第一题:单值二叉树题目介绍:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。//题目框架boolisUnivalTree(structTreeNode*root){}问题分析:很多老铁看到这道题,一上来会选择直接遍历二叉树来试图解决这道题。当然遍历固然可行,这道题使用二叉树的前中后遍历的方式来解决,虽然实现的过程存在一定的差异,但都能做出来。这里给出前序遍历的实现,以便参考。前序遍历,无非是先判断根节点,在判断左右子树。根节点的值不一样,返回false,左右子树中任何一方存在节点的值不一样都返回false。boolP
题目链接Leetcode.530二叉搜索树的最小绝对差easy题目描述给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。示例1:输入:root=[4,2,6,1,3]输出:1示例2:输入:root=[1,0,48,null,null,12,49]输出:1提示:树中节点的数目范围是[2,104][2,10^4][2,104]00Node.val105解法:中序遍历因为给定的是一棵二叉搜索树。中序遍历结点值是按从小到大排序的。所以我们用pre记录前一个结点,用ans记录最小的绝对值差。每次更新ans=min{ans,root.v
题目链接Leetcode.530二叉搜索树的最小绝对差easy题目描述给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。示例1:输入:root=[4,2,6,1,3]输出:1示例2:输入:root=[1,0,48,null,null,12,49]输出:1提示:树中节点的数目范围是[2,104][2,10^4][2,104]00Node.val105解法:中序遍历因为给定的是一棵二叉搜索树。中序遍历结点值是按从小到大排序的。所以我们用pre记录前一个结点,用ans记录最小的绝对值差。每次更新ans=min{ans,root.v
目录题目:剑指Offer53-I.在排序数组中查找数字I-力扣(Leetcode)题目的接口:解题思路:代码:过啦!!!写在最后:题目:剑指Offer53-I.在排序数组中查找数字I-力扣(Leetcode)题目的接口:classSolution{public:intsearch(vector&nums,inttarget){}};解题思路:那么这道题呢,如果只是作为一道题,或者说笔试题,我们当然是二话不说直接暴力拿下,来看代码:classSolution{public:intsearch(vector&nums,inttarget){intcnt=0;for(autoe:nums)if(e=
目录题目:剑指Offer53-I.在排序数组中查找数字I-力扣(Leetcode)题目的接口:解题思路:代码:过啦!!!写在最后:题目:剑指Offer53-I.在排序数组中查找数字I-力扣(Leetcode)题目的接口:classSolution{public:intsearch(vector&nums,inttarget){}};解题思路:那么这道题呢,如果只是作为一道题,或者说笔试题,我们当然是二话不说直接暴力拿下,来看代码:classSolution{public:intsearch(vector&nums,inttarget){intcnt=0;for(autoe:nums)if(e=
目录题目来源题目描述示例提示题目解析算法源码题目来源698.划分为k个相等的子集-力扣(LeetCode)题目描述给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例输入nums=[4,3,2,3,5,2,1],k=4输出true说明有可能将其分成4个子集(5),(1,4),(2,3),(2,3)等于总和。输入nums=[1,2,3,4],k=3输出false说明无提示10每个元素的频率在 [1,4] 范围内题目解析本题其实是一道子集问题,可以利用回溯法求解。首先,我们可以求出nums数组的所有元素之和sum,如果sum%k不为0的话
目录题目来源题目描述示例提示题目解析算法源码题目来源698.划分为k个相等的子集-力扣(LeetCode)题目描述给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例输入nums=[4,3,2,3,5,2,1],k=4输出true说明有可能将其分成4个子集(5),(1,4),(2,3),(2,3)等于总和。输入nums=[1,2,3,4],k=3输出false说明无提示10每个元素的频率在 [1,4] 范围内题目解析本题其实是一道子集问题,可以利用回溯法求解。首先,我们可以求出nums数组的所有元素之和sum,如果sum%k不为0的话