C/C++教程

C++ 判断是不是二叉搜索树

本文主要是介绍C++ 判断是不是二叉搜索树,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
    //给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。
    //二叉搜索树满足每个节点的左子节点小于当前节点且右子节点大于当前节点。
    //数据范围:节点数量满足1-10000,节点上的值满足int的值范围
    //用中序遍历很简单就能得到结果
    bool isValidBST(TreeNode* root) 
    {
        stack<TreeNode*> stk;
        TreeNode* p = root;
        bool isFirst = true;
        int lastVal;
        while (p||!stk.empty())
        {
            while (p)
            {
                stk.emplace(p);
                p = p->left;
            }
            if (!stk.empty())
            {
                p = stk.top();
                stk.pop();
                if (isFirst)
                {
                    lastVal = p->val;
                    isFirst = false;
                }
                else
                {
                    if (lastVal >= p->val) 
                        return false;
                }
                p = p->right;
            }
        }
        return true;
    }

 

这篇关于C++ 判断是不是二叉搜索树的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!