力扣 965.单值二叉树

单值二叉树

    • 题目描述
      • 图示
    • 思路分析
    • 样例代码
    • 总结

题目描述

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false。

图示

力扣 965.单值二叉树_第1张图片

力扣 965.单值二叉树_第2张图片

提示:

  1. 给定树的节点数范围是 [1, 100]。
  2. 每个节点的值都是整数,范围为 [0, 99]

思路分析

若A == B,B == C,则可以得出,A == C

  • 利用传递性,我们可以的出,如果父节点和子节点相同,然后子节点又和他的子节点相同,就可以得出,从父节点到最后一个字节点都是相同的
  • 空树不影响单值二叉树
  • 可以由上思路,进行递归,根节点与左右子树分别对比,利用 &&,只要有一个不相同就返回false,不然就返回true
  • 子问题:自己的值和自己孩子的值相不相同
  • 结束条件:为空或者对比后出了结果

样例代码

bool isUnivalTree(struct TreeNode* root) 
{
		if(root == NULL)
		{
				return true;
		}

		if(root->left && root->left->val != root->val)
		{
			return false;
		}

		if(root->right && root->right->val != root->val)
		{
			return false;
		}

		return isUnivalTree(root->left) &&
			   isUnivalTree(root->right);
}

总结

以上就是今天要讲的内容,本文简单介绍了 力扣 965.单值二叉树 的解题思路,在力扣以及牛客网中还会有很多类似的题目,今后将会持续更新,敬请关注!

你可能感兴趣的:(leetcode,算法,职场和发展,c语言,学习,开发语言)