Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
- The left subtree of a node contains only nodes with keys less than the node's key.
- The right subtree of a node contains only nodes with keys greater than the node's key.
- Both the left and right subtrees must also be binary search trees.
分析:根据BST中序遍历序列有序的性质判断,只要在中序遍历二叉树的代码基础上加上判断相邻元素关系的语句即可 本文地址
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 bool isValidBST(TreeNode *root) { 13 // IMPORTANT: Please reset any member data you declared, as 14 // the same Solution instance will be reused for each test case. 15 //注意题目要求是 less than和greater than; 16 stack<TreeNode*> S; 17 TreeNode *pre = NULL, *p = root; 18 while(p || S.empty() == false) 19 { 20 while(p) 21 { 22 S.push(p); 23 p = p->left; 24 } 25 if(S.empty() == false) 26 { 27 p = S.top(); 28 S.pop(); 29 if(pre && p->val <= pre->val)return false; 30 pre = p; 31 p = p->right; 32 } 33 } 34 return true; 35 } 36 };
【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3448413.html