本文主要是介绍二叉树: 单值二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
问题:
思路
代码
讲解
问题:
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true
;否则返回 false
。
示例 1:
输入:[1,1,1,1,1,null,1] 输出:true
思路
比较父节点与左右孩子节点,当不同,false。
代码
bool isUnivalTree(struct TreeNode* root) {
if (root == NULL)
return true;
//不需要额外写 root->left == NULL 这种情况! 当走到叶子节点时,没到空节点,可以继续往下走。
//分开写
if (root->left && root->left->val != root->val) //可以覆盖到叶子节点。 每个父子都可以比较到(空节点不含val,不需要比较)
return false;
if (root->right && root->right->val != root->val)
return false;
return isUnivalTree(root->left)
&& isUnivalTree(root->right);
}
讲解
return isUnivalTree(root->left)
&& isUnivalTree(root->right);
通过让左右子树进入递归的方式,遍历所有树节点。
这篇关于二叉树: 单值二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!