剑指 Offer 68 - I: 二叉搜索树的最近公共祖先

文章探讨了在二叉搜索树中寻找最小父节点的问题,强调了利用树的特性——节点比较和递归方法。关键在于正确判断两个值与当前节点的关系,使用异或条件确保只有一个条件满足。此外,空值判断和理解何时停止递归也是解题的关键。
摘要由CSDN通过智能技术生成

看到这道题第一反应就是不会做。但是!这里自己漏了一个很重要的条件:它是一个二叉搜索树!所以就变得简单清晰了起来,只需要知道两个值和当前root比较哪个大,是一个还是两个大,如果都大于/小于就往那一边转方向,如果一个大一个小或者有一个是等于说明就是当前节点!

这里的3和5都比2大,但是最小父节点并不是2,所以这种情况还是要往下进行寻找!千万要注意前面的一个判断条件并不是想表达的意思,a>b || c>b这个只要有一个满足就是true,所以千万不能是或,而应该是异或(有且只有一个条件满足)。

这里其实第一个条件是有点多余的,主要还是不熟这个递归的方法,因为只有两个节点都在同一边的时候才会需要继续,不然就是找到正确结果(等于/有一个在左边一个在右边)

 也可以用下面这种方法来解决:

2023/8/23

这道题可以根据搜索二叉树的性质来解决。因为从根节点开始,判断是否在两侧,在两侧说明祖先节点就是当前节点(分叉)如果都大于,就往右边,只要牢牢抓住搜索二叉树这个性质,还是很简单的。还有,每次的空值判断是必不可少的!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值