检查是否为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;
    }
    
};

 

posted on 2017-04-19 04:29  123_123  阅读(188)  评论(0编辑  收藏  举报