【leetcode】Validate Binary Search Tree
2014-05-21 08:52
423 查看
问题:给定一棵二叉树,判断其是否为二叉查找树。
二叉查找树的要求:
1. 若根结点不空,且存在左孩子,则该结点的值大于左孩子的值(是大于,不是大于等于)。
2.若根结点不空,且存在右孩子,则该结点的值小于右孩子的值(是小于,不是小于等于)。
3.根结点的左右子树也是二叉查找树。
分析:提到二叉查找树,我们知道其中序遍历是递增有序的,也就是说,在中根遍历中,访问到的当前根结点的值要大于中序遍历中上一次访问到的结点的值,否则得到的就不是递增有序,即不是二叉查找树。但这里说到了一个“上次访问到的结点的值”,在访问中序遍历的第一个结点时,它并不存在先前的结点,或先前的值,这就要我们给定一个初始的“先前”值。另外一个注意的是,随着访问的进行,“上一次访问到的结点的值” 要被当前访问到的结点的值替代。
二叉查找树的要求:
1. 若根结点不空,且存在左孩子,则该结点的值大于左孩子的值(是大于,不是大于等于)。
2.若根结点不空,且存在右孩子,则该结点的值小于右孩子的值(是小于,不是小于等于)。
3.根结点的左右子树也是二叉查找树。
分析:提到二叉查找树,我们知道其中序遍历是递增有序的,也就是说,在中根遍历中,访问到的当前根结点的值要大于中序遍历中上一次访问到的结点的值,否则得到的就不是递增有序,即不是二叉查找树。但这里说到了一个“上次访问到的结点的值”,在访问中序遍历的第一个结点时,它并不存在先前的结点,或先前的值,这就要我们给定一个初始的“先前”值。另外一个注意的是,随着访问的进行,“上一次访问到的结点的值” 要被当前访问到的结点的值替代。
public: bool visitTree(TreeNode *root, int& pre_value){ if(root == NULL) return true; bool left = visitTree(root->left, pre_value); if(!left || pre_value >= root->val) return false; else pre_value = root->val; return visitTree(root->right, pre_value); } bool isValidBST(TreeNode *root) { bool isBST = true; if( NULL == root || (NULL == root->left && NULL == root->right)) return isBST; int pre_value = 0x80000000; return visitTree(root,pre_value); }
相关文章推荐
- [LeetCode]Validate Binary Search Tree
- Leetcode: Validate Binary Search Tree
- [LeetCode]Validate Binary Search Tree
- [leetcode]98. Validate Binary Search Tree@Java解题报告
- Leetcode-Validate Binary Search Tree
- Validate Binary Search Tree leetcode java
- leetcode---Validate Binary Search Tree
- leetcode - Validate Binary Search Tree
- [LeetCode] - Validate Binary Search Tree
- leetcode-98 Validate Binary Search Tree
- 算法分析与设计——LeetCode Problem.98 Validate Binary Search Tree
- 098 Validate Binary Search Tree [Leetcode]
- leetCode :Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- 【Leetcode】Validate Binary Search Tree
- Leetcode 98 Validate Binary Search Tree 验证二叉查找树
- Leetcode 98. Validate Binary Search Tree
- leetcode_Validate Binary Search Tree
- leetcode——98——Validate Binary Search Tree
- leetcode -day26 Validate Binary Search Tree