zoukankan      html  css  js  c++  java
  • [二叉树算法]关于判断是否为BST的算法

    //判断是否为BST 搜索树==二叉排序树 1、递归知最大最小值。2、先中序判是否单调 
     bool IsValidBST(BTNode *p,int low,int high){
         if(p==NULL){
             return true;
         }else{
             if(low<p->data && high>p->data){
                 return(IsValidBST(p->lchild,low,high) &&
                     IsValidBST(p->rchild,low,high));
             }else{
                 return false;
             }
         }
     }
    void IsBST(BTNode *p,int &k,bool &fail){
        if(p && !fail){
            IsBST(p->lchild,k,fail);
            if(k<p->data){
                k=p->data;
            }else{
                fail=true;
            }
            IsBST(p->rchild,k,fail);
        }
    }
    bool isValidBST(TreeNode *root) {
        vector<int> res;
        isValidBST(root, res);
        int len = res.size();
        bool flag = true;
        for (int i=0; i<len-1; i++){
            if (res[i] >= res[i+1]){
                flag = false;
                break;
            }
        }
        return flag;
    }
    void isValidBSTOrder(TreeNode *root, vector<int> &res){
        if (root == NULL)
            return;
         isValidBST(root->left, res);
         res.push_back(root->val);
         isValidBST(root->right, res);
    }
    //判断是否为BST 
    bool fail=false;
    void IsBST(BTNode *p,int &k,bool &fail){
        if(p && !fail){
            IsBST(p->lchild,k,fail);
            if(k<p->data){
                k=p->data;
            }else{
                fail=true;
            }
            IsBST(p->rchild,k,fail);
        }
    }
  • 相关阅读:
    手机通讯录实现
    leetcode
    android 上手维修设备和推断启动服务
    MVC Code First (代码优先)
    10000阶乘
    telnet发电子邮件
    nodejs显现events.js:72抛出错误
    指针
    脑洞门大开思维工具:六顶思考帽
    C#实现CAD数据转shape或mdb
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/12083175.html
Copyright © 2011-2022 走看看