- bool isBSTHelper(Node p, int low, int high) {
- if (p == null) return true;
- if (p.data > low && p.data < high)
- return isBSTHelper(p.leftChild, low, p.data) &&
- isBSTHelper(p.rightChild, p.data, high);
- else
- return false;
- }
- bool isBST(Node root) {
- return isBSTHelper(root, INT_MIN, INT_MAX);
- }
其实,我们可以不用每次都去查找最大值和最小值,每次向下递归时,我们只要把该节点的值, 作为一个最大值, 传给它的左节点,也就是左边所有节点的值都要比它小;并且把它的值,作为最小值,传给它的右节点,也就是右边所有节点的值都要比它大。每次向下走,分别更新最大值和最小值即可。
其中,INT_MIN是系统内置最小值,保证每遍历一个树节点确保它的值比它的根节点(大或小),递归终止条件是p==Null退出。
本文深入探讨了在Java环境下通过利用辅助函数isBSTHelper来验证二叉搜索树(BST)的方法,强调了如何仅通过比较当前节点值与其父节点值来简化验证过程,同时详细阐述了递归终止条件及其对算法效率的影响。

439

被折叠的 条评论
为什么被折叠?



