Leetcode 题解 - 236. Lowest Common Ancestor of a Binary Tree

题目

给定一棵二叉树(Binary Tree),找出两个给定节点的最近公共祖先(Lowest Common Ancestor,简称 LCA)。

根据 LCA 的维基百科定义:“在一个树中同时拥有 v, w 作为后代的最深的节点,我们定义一个节点也是其自己的后代。”

     _______3______
    /              \
 ___5__          ___1__
/      \        /      \
6      _2       0       8
      /  \
      7   4

示例

节点 5、1 的 LCA 是 3。

节点 5、4 的 LCA 是 5,因为根据定义,一个节点也可以是自己的后代。

难度:中等

编程语言:C++


分析

236 这道题跟 235. Lowest Common Ancestor of a Binary Search Tree 非常相像,235 的是二叉搜索树,236 是二叉树。

我在解决 235 时一开始没有留意二叉搜索树的节点值有序的属性,当成是一般二叉树来解决,代码跟 236 一模一样,分析过程在此,就不再赘述了。