4-1.2:是否二叉搜索树。思考题

中序遍历完成

问题分析:

利用二叉搜索树的性质:所有左子树的键值小于根结点,所有右子树的键值大于根结点。

引入一个全局指针B

中序遍历完成主要依赖:左子树<根结点<右子树,先判断左子树与根结点的大小,此时B是左子树T是根结点,再判断根结点与右子树此时B为根结点,T为右子树。

BinTree B;
bool Is_BST(BinTree T)
{
    if(T){
        if(!Is_BST(T->Left)) return false:
        if(B && B->Data>T->Data) return false;
        B=T;
        if(!Is_BST(T->Right)) return false;
    }
    return true;
}

可能会有疑问要所有左子树键值都小于根结点,如何确保每次比较B的Data就一定是最大的那个呢?

答:因为是中序,B依次是左子树,根结点,右子树,故返回上层结点时的B是下层右子树,应为二叉搜索树的性质,B的Data一定为目前最大的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值