二叉搜索树的最低公共祖先
给定一棵二叉查找树两个结点,请找出这两个结点的最低公共祖先结点
实现思路
假设给定的两个结点的权值分别为 node1 和 node2
如果根的权值处于 node1 和 node2 之间,则根就是它们的最低公共祖先结点
如果根的权值比 node1 和 node2 都大,则它们的最低公共祖先结点在根的左子树中
如果根的权值比 node1 和 node2 都小,则它们的最低公共祖先结点在根的右子树中
因此,这可以用递归来实现。
⼆叉搜索树是经过排序的,位于左⼦树的节点都⽐⽗节点⼩,位于右⼦树的节点都⽐⽗节点⼤。既然要找最低的公共祖先节点,我们可以从根节点开始进⾏⽐较。若当前节点的值⽐两个节点的值都⼤,那么最低的祖先节点⼀定在当前节点的左⼦树中,则遍历当前节点的左⼦节点;反之,若当前节点的值⽐两个节点的值都⼩,那么最低的祖先节点⼀定在当前节点的右⼦树中,则遍历当前节点的右⼦节点;这样,直到找到⼀个节点,位于两个节点值的中间,则找到了最低的公共祖先节点。