二叉树中两个点的最低公共祖先

一个二叉树根节点root,两个点A和B

  • 情况1,这是一个排序的二叉树
    • 从树的根节点出发,当前节点如果同时大于A和B,则到左子树找
    • 从树的根节点出发,当前节点如果同时小于A和B,则到右子树找
    • 如果当前节点,比一个大,比一个小,那么这就是所求的最低公共祖先
  • 情况2,不是排序的二叉树,但是每个节点有父节点的指针
    • 从两个节点A和B出发,一直找父节点,形成两个链表
    • 转变成求两个链表的公共节点问题
  • 情况3,不是排序的,也没有父指针
    • 从根节点遍历树,记录下从根节点到A和B的路径(可以用栈)
    • 两个栈,记录了路径,最后找一下公共节点即可