1、该二叉树为二叉搜索树。
二叉搜索树:如果左子树存在,其结点都比父结点小,如果右子树存在,其结点都比父结点大。
故从根结点开始与两个输入结点比较:
如果当前结点大于这两个结点时,那么这两个结点的最近公共祖先一定在当前结点的左子树中;
如果当前结点小于这两个结点时,那么这两个结点的最近公共祖先一定在当前结点的右子树中。
参考代码:
Node<T>* _GetlastcommonNode(Node<T>* root, int val1, int val2)
{
assert(root);
Node<T>* Cur = root;
while (Cur)
{
//当前结点大于这两个结点,故在左子树中找
if (Cur->_val > val1&&Cur->_val > val2)
Cur = Cur->_left;