力扣98
这里的验证二叉搜索树,原来就只想着左节点的数如果大于根节点或者右节点小于根节点就返回false,这里就会出错,因为比如 3 1 5 【】 【】0 7这个就不是二叉搜索树。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ //这里的minVal或maxVal都代表这这个子树的父节点的值, bool isValidBSTA(struct TreeNode* root,long long minVal, long long maxVal) { if (root == NULL) return true; if (root->val <= minVal || root->val >= maxVal) { return false; } return (isValidBSTA(root->left,minVal,root->val) && isValidBSTA(root->right, root->val, maxVal)) ; } bool isValidBST(struct TreeNode* root) { return isValidBSTA(root,LLONG_MIN,LLONG_MAX); }
力扣110平衡二叉树
int height(struct TreeNode* root) {
if (root == NULL)
{
return 0;
}
else
{
return fmax(height(root->left),height(root->right)) + 1;
}
}
bool isBalanced(struct TreeNode* root)
{
if (root == NULL)
{
return true;
}
else
{
return
(fabs(height(root->left) - height(root->right)) <= 1) ;
&& isBalanced(root->left)
&& isBalanced(root->right); //如果这里不递归下去,就会使下面这种情况出错,
}
}
这种情况,根节点的左右高度是相等的,但是以左孩子为根的时候,左右孩子的高度差比较大,所以遍历所有的节点,查询高度。