先解释一下这道题的意思,就是给定一棵二叉树,然后这棵树上有两个结点,请找出他们两个的最近公共祖先,也就是它们两个距离最近的公共结点,例如:
上面这棵树中D和F的最近公共祖先就是A,D和E的最近公共祖先就是B。
那么我们会发现如果这两个结点分别在root的左右两颗子树上,那么它们两个的最近公共祖先一定是根节点。代码如下:
BNode *GetNearestAncestor(BNode *root, BNode *n1, BNode *n2)
{
BNode *n1InLeft =