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;
    }

 

上一篇:本篇博客记录的是我写过的LeetCode中关于栈的题


下一篇:【打卡】——【LeetCode学习计划】《数据结构入门-C++》第10天 树