大家好,我是小卡皮巴拉
文章目录
目录
力扣题目: 单值二叉树
题目描述
示例 1:
示例 2:
解题思路
题目理解
算法选择
具体思路
解题要点
完整代码(C语言)
兄弟们共勉 !!!
每篇前言
博客主页:小卡皮巴拉
咱的口号:🌹小比特,大梦想🌹
作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请大佬们批评斧正。
力扣题目: 单值二叉树
原题链接:单值二叉树
题目描述
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回
true
;否则返回false
。示例 1:
输入:[1,1,1,1,1,null,1]
输出:true示例 2:
输入:[2,2,2,5,2]
输出:false
解题思路
题目理解
判断一个给定的二叉树是否是单值二叉树,即树中所有节点的值是否相同。
算法选择
使用深度优先搜索(DFS)递归遍历二叉树,在遍历过程中检查每个节点的值是否与根节点的值相同。
具体思路
边界条件:如果树为空,则返回
true
,因为空树被认为是单值二叉树。左子树检查:如果左子树不为空且左子节点的值与根节点的值不同,则返回
false
。右子树检查:如果右子树不为空且右子节点的值与根节点的值不同,则返回
false
。递归检查:如果当前根节点、左子节点和右子节点的值都相同,则递归地检查左子树和右子树是否也是单值二叉树。
返回结果:如果所有检查都通过,则返回
true
;否则返回false
。
解题要点
使用递归遍历二叉树。
在遍历过程中比较节点的值。
处理边界条件。
完整代码(C语言)
typedef struct TreeNode TreeNode; bool isUnivalTree(struct TreeNode* root) { if(root == NULL) { return true; } if(root->left && root->val != root->left->val) { return false; } if(root->right && root->val != root->right->val) { return false; } //当前根结点和左右孩子结点的值相同 return isUnivalTree(root->left) && isUnivalTree(root->right); }
兄弟们共勉 !!!
码字不易,求个三连
抱拳了兄弟们!