您的位置:首页 > 其它

判断一棵树是否为二叉搜索树

2016-06-14 12:18 323 查看
算法:使用BFS,在每次入队前判断是否满足BST条件。代码:
#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot == NULL)
return true;
queue<TreeNode *>q;
q.push(pRoot);
while(!q.empty()){
TreeNode *tmp = q.front();
if(tmp->left!=NULL){
if(tmp->val < tmp->left->val)
return false;
else
q.push(tmp->left);
}
if(tmp->right!=NULL){
if(tmp->val > tmp->right->val)
return false;
else
q.push(tmp->right);
}
q.pop();
}
return true;
}
};
int main() {
TreeNode *root= new TreeNode(1);
TreeNode *r1l = new TreeNode(2);
TreeNode *r1r = new TreeNode(3);
TreeNode *r2l = new TreeNode(4);
TreeNode *r2r = new TreeNode(5);
root->left = r1l;
root->right = r1r;
r1l->left = r2l;
r1l->right = r2r;
vector<vector<int>>res;
Solution s;
cout<<s.IsBalanced_Solution(root)<< endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: