看到这道题第一反应就是不会做。但是!这里自己漏了一个很重要的条件:它是一个二叉搜索树!所以就变得简单清晰了起来,只需要知道两个值和当前root比较哪个大,是一个还是两个大,如果都大于/小于就往那一边转方向,如果一个大一个小或者有一个是等于说明就是当前节点!
这里的3和5都比2大,但是最小父节点并不是2,所以这种情况还是要往下进行寻找!千万要注意前面的一个判断条件并不是想表达的意思,a>b || c>b这个只要有一个满足就是true,所以千万不能是或,而应该是异或(有且只有一个条件满足)。
这里其实第一个条件是有点多余的,主要还是不熟这个递归的方法,因为只有两个节点都在同一边的时候才会需要继续,不然就是找到正确结果(等于/有一个在左边一个在右边)
也可以用下面这种方法来解决:
2023/8/23
这道题可以根据搜索二叉树的性质来解决。因为从根节点开始,判断是否在两侧,在两侧说明祖先节点就是当前节点(分叉)如果都大于,就往右边,只要牢牢抓住搜索二叉树这个性质,还是很简单的。还有,每次的空值判断是必不可少的!