判断一棵树是否为二叉搜索树
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; }
相关文章推荐
- nyoj 31 5个数求最值 【*min_element()与*max_element()的练习使用】
- 二叉树中和为某一值的路径
- 二叉搜索树的后序遍历序列
- 栈的压入、弹出序列
- 顺时针打印矩阵
- 重建二叉树
- Generate Parentheses
- Populating Next Right Pointers in Each Node
- 计算树中值最大路径
- Single Number II
- Best Time to Buy and Sell Stock II
- Unique Binary Search Trees
- Linked List Cycle
- python学习笔记 异步asyncio
- Integer to Roman (罗马数字转换)
- Ubuntu搭建boa服务器
- Single Number III
- ZigZag Conversion
- Maven使用nexus配置,SNAPSHOT版本介绍及发布jar到nexus
- 字符串匹配的KMP算法