检查是否为BST

Posted 修修55

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查是否为BST相关的知识,希望对你有一定的参考价值。

//判断二叉树是否是平衡搜索树

//中序遍历判断即可

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/

class Checker {
public:
    bool checkBST(TreeNode* root) {
        stack<TreeNode*> s;
        TreeNode *pNode = root;
        vector<int> data;
        while (pNode != NULL || !s.empty())
        {
            while (pNode != NULL)
            {
                s.push(pNode);
                pNode = pNode->left;
            }
            if (!s.empty())
            {
                pNode = s.top();
                data.push_back(pNode->val);
                s.pop();
                pNode = pNode->right;
            }
        }
        for (size_t i = 0; i < data.size()-1; i++)
        {
            if (data[i] > data[i + 1])
                return false;
        }
        return true;
    }
    
};

 

以上是关于检查是否为BST的主要内容,如果未能解决你的问题,请参考以下文章

判断是否为BST

c_cpp 检查给定数组是否可以表示BST的Preorder Traversal

JavaScript单行代码,也就是代码片段

BST 中节点的 PreOrder Successor

分享前端开发常用代码片段

收藏|分享前端开发常用代码片段