注意
当前点的范围不仅和父节点有关还和它的祖先有关
思路
1.普通dfs / stack
2. 只需判断中序遍历的序列是否是一个严格递增的序列
代码
/**
* 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 isValidBST(TreeNode* root) {
stack<TreeNode *>st;
TreeNode * cur = root;
bool flag = false;
int last = 0;
while(cur ||!st.empty())
{
while(cur)
{
st.push(cur);
cur = cur -> left;
}
cur = st.top();
st.pop();
if(flag && cur -> val <= last)return false;
if(!flag)flag = true;
last = cur -> val;
cur = cur -> right;
}
return true;
}
};