判断一个二叉树是否为BST

本文深入探讨了在Java环境下通过利用辅助函数isBSTHelper来验证二叉搜索树(BST)的方法,强调了如何仅通过比较当前节点值与其父节点值来简化验证过程,同时详细阐述了递归终止条件及其对算法效率的影响。
  1. bool isBSTHelper(Node p, int low, int high) {  
  2.   if (p == nullreturn true;  
  3.   if (p.data > low && p.data < high)  
  4.     return isBSTHelper(p.leftChild, low, p.data) &&  
  5.            isBSTHelper(p.rightChild, p.data, high);  
  6.   else  
  7.     return false;  
  8. }  
  9.    
  10. bool isBST(Node root) {  
  11.   return isBSTHelper(root, INT_MIN, INT_MAX);  

其实,我们可以不用每次都去查找最大值和最小值,每次向下递归时,我们只要把该节点的值, 作为一个最大值, 传给它的左节点,也就是左边所有节点的值都要比它小;并且把它的值,作为最小值,传给它的右节点,也就是右边所有节点的值都要比它大。每次向下走,分别更新最大值和最小值即可。

其中,INT_MIN是系统内置最小值,保证每遍历一个树节点确保它的值比它的根节点(大或小),递归终止条件是p==Null退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值