特别说明:
输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
输出:5
解释:节点 5 和节点 4 的最近公共祖先是节点 5 。因为根据定义最近公共祖先节点可以为节点本身。
解题思路:
一般二叉树相关的算法题,都可以使用递归这个编程技巧来解题,本题也不例外。
分析: 2个节点存在的位置,不外乎以下4种情况:
-
要么都在左子树上
-
要么都在右子树上
-
要么一个在左,一个在右
-
至少有一个不在这颗二叉树中【就是不在这个二叉树上的情况】
我们先看代码,然后来讲解解法,代码如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* public var val: Int
* public var left: TreeNode?
* public var right: TreeNode?
* public init(_ val: Int