码迷,mamicode.com
首页 > 其他好文 > 详细

检查是否为BST

时间:2017-04-19 10:09:50      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:turn   str   for   back   div   code   i++   ack   style   

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

//中序遍历判断即可

/*
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

标签:turn   str   for   back   div   code   i++   ack   style   

原文地址:http://www.cnblogs.com/xiuxiu55/p/6731407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!