关于搜索二叉树与中序遍历

本文介绍了如何使用中序遍历解决搜索二叉树相关问题,包括判断一棵树是否为二叉搜索树以及寻找二叉搜索树中两个错误的节点。重点强调了中序遍历的特性以及在递归过程中边界条件的设定,同时指出了在实现过程中使用全局变量或引用传递的重要性。
摘要由CSDN通过智能技术生成

一般搜索二叉树的题都可以用中序遍历做,今天复习了一下,发现有一些小细节需要注意,总结一下。
(1)首先是一道很直接的题,判断一颗树是否为二叉搜索树。

①牛客NC60-判断一颗树是否为搜索二叉树及完全二叉树
②Leetcode 98-验证二叉搜索树
有一种比较常见的错误思路:
用递归的思想,首先判断当前的节点是否满足大于左孩子 && 小于右孩子;若符合,再递归判断它的左右子树是否均为二叉搜索树,写成代码如下:

bool isSerch(TreeNode* root){
   
    if(!root)
        return true;
    if(root->left && root->left->val >= root->val)
        return false;
    if(root->right && root->right->val <= root->val)
        return false;
    return isSerch(root->left)&&isSerch(root->right);
}

但这种只是保证每一个节点大于左孩子、小于右孩子,而不是大于左子树所有节点、小于右子树所有节点,如下图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值