题目描述
题目来源:leetcode.985:单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
解题思路:
这个题我们可以通过判断二叉树的根与叶子是否相等来解决这个问题,注意要分三种情况:
1.如果是空树,那也是符合情况的,直接返回true。
2.首先满足左子树不为空的条件下,判断左子树的值是否与根相同,相同返回true,不相同返回false.
3.首先满足右子树不为空的条件下,判断右子树的值是否与根相同,相同返回true,不相同返回false.
代码解决:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ 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); }
结果与总结:
通过所有示例,问题得到解决。
总结:本题题目简单,其主要解决方法采取递归的方式来解决,利用递归前要判定几种特殊情况。