Validate Binary Search Tree 验证二叉搜索树

  1. 很简单的一道算法题。对单个节点,判断其是否存在左右子树,都存在,测比较两个值。否则递归返回两个子树的与结果。单独存在一个,单独运算即可。

  2. #include
    using namespace std;
    struct TreeNode
    {
    int val;
    TreeNode lChild;
    TreeNode rChild;
    TreeNode(int val, TreeNode
    l = nullptr, TreeNode
    r = nullptr)
    {
    this->val = val;
    this->lChild = l;
    this->rChild = r;
    }
    };
    TreeNode *create(int intarr[], int length, int i)
    {
    TreeNode *node = nullptr;

    if (i < length && intarr[i] != -1)
    {
    node = new TreeNode(intarr[i]);
    node->lChild = create(intarr, length, i * 2 + 1);
    node->rChild = create(intarr, length, i * 2 + 2);
    }
    return node;
    }
    bool ValidateBinarySearchTree(TreeNode *node)
    {
    if (node->lChild || node->rChild)
    {
    if (node->rChild && node->lChild)
    {
    if (node->rChild->valval || node->lChild->val>node->val)
    {
    return false;
    }
    else
    {
    return ValidateBinarySearchTree(node->rChild) && ValidateBinarySearchTree(node->lChild);
    }
    }
    else if (node->lChild && !node->rChild)
    {
    if (node->lChild->val > node->val)
    {
    return false;
    }
    else
    {
    return ValidateBinarySearchTree(node->lChild);
    }
    }
    else
    {
    if (node->rChild->val < node->val)
    {
    return false;
    }
    else
    {
    return ValidateBinarySearchTree(node->rChild);
    }
    }
    }
    else
    {
    return true;
    }
    }
    int main()
    {
    int intarr[7] = {50,20,60,15,30,-1,70};
    TreeNode *node = create(intarr, 7, 0);
    cout << ValidateBinarySearchTree(node) << endl;;
    system(“pause”);
    return 0;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对 VeeValidate 2.2.15 中 select 的自定义验证问题,您可以使用 VeeValidate.Validator.extend 方法来扩展验证规则。下面是一个自定义验证 select 选项不能为空的示例代码: ```javascript import { Validator } from 'vee-validate'; Validator.extend('requiredSelect', { getMessage: (field) => `请选择${field}`, validate: (value) => { return value !== null && value !== '' && value !== undefined; } }); ``` 在这个示例代码中,我们使用 Validator.extend 方法来扩展一个名为 requiredSelect 的验证规则,getMessage 方法用于定义错误提示信息,validate 方法用于定义验证逻辑,这里判断 select 的值是否为空。 使用示例: ```html <template> <form> <select v-validate="'requiredSelect'" name="fruit"> <option value="">请选择水果</option> <option value="apple">苹果</option> <option value="banana">香蕉</option> <option value="orange">橙子</option> </select> <span>{{ errors.first('fruit') }}</span> <button type="submit">提交</button> </form> </template> <script> export default { mounted() { this.$validator.validateAll(); // 进行表单验证 } } </script> ``` 在这个示例代码中,我们在 select 元素上使用了 v-validate 指令,并将其绑定到 requiredSelect 验证规则。同时,我们在 span 元素中使用了 errors.first 方法来获取错误提示信息。在 mounted 钩子函数中,我们通过 this.$validator.validateAll() 来进行表单验证。 希望这个示例代码能帮到您!如果您还有任何问题或疑问,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值