LeetCode 98 Validate Binary Search Tree判断是否为合法二叉树
2016-02-12 14:50
543 查看
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool Left(TreeNode* left, int root){ while(left->right != NULL){ left = left->right; } return left->val < root; } bool Right(TreeNode* right,int root){ while(right->left != NULL) right = right->left; return right->val > root; } bool isValidBST(TreeNode* root) { if(root == NULL) return true; int left = 0, right = 0; bool lres = true,rres = true; if(root->left){//不为空的情况下 left = 1; if(root->left->val >= root->val) return false; lres = isValidBST(root->left); if(lres) lres = Left(root->left,root->val);//在左儿子是合法二叉树的情况下,检验左儿子的最大值(即一直取左儿子的右儿子)是否小于root值 else return false; } if(root->right){ right = 1; if(root->right->val <= root->val) return false; rres = isValidBST(root->right); if(rres) rres = Right(root->right,root->val); else return false; } return lres && rres; } };
合法二叉树条件:1、左儿子均小于根,右儿子均大于根 2、左儿子、右儿子均为合法二叉树
相关文章推荐
- 方法的调用
- XML VS SQLite
- POJ 1985 Cow Marathon(树的直径)
- spring(AOP)多个切面
- Educational Codeforces Round 7 B. The Time 水题
- BZOJ 3672: [Noi2014]购票( 树链剖分 + 线段树 + 凸包 )
- uvaoj-1225:数数字
- 关于Windows7 64的注册表读写问题
- Building Maintainable Software-java篇之Write Simple Units of Code
- sdptool 设备服务查找命令使用
- 汇编软件MASM和调试工具DEBUG的使用
- java基础20递归
- POJ 2631 Roads in the North(树的直径)
- Volley学习记录(二)
- mongodb分片部署
- 解决ADB端口占用问题
- Soket转发消息服务(群聊)
- 那些被吹的神乎其乎的QQ营销大法
- jquery封装之--css封装
- POJ 1015