235. 二叉搜索树的最近公共祖先-leetcode
235. 二叉搜索树的最近公共祖先-leetcode
Table of Contents
- 1. 题目
- 2. 代码
- 3. 思路
1 题目
235. 二叉搜索树的最近公共祖先
2 代码
/** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * public $right = null; * function __construct($value) { $this->val = $value; } * } */ class Solution { /** * @param TreeNode $root * @param TreeNode $p * @param TreeNode $q * @return TreeNode */ function lowestCommonAncestor($root, $p, $q) { if (empty($root)) { return $root; } if (($root->val <= $p->val && $root->val >= $q->val) || ($root->val >= $p->val && $root->val <= $q->val)) { return $root; } if ($root->val >= $p->val && $root->val >= $q->val) { return $this->lowestCommonAncestor($root->left, $p, $q); } if ($root->val <= $p->val && $root->val <= $q->val) { return $this->lowestCommonAncestor($root->right, $p, $q); } } }
3 思路
- 最近公共祖先,首先想到了公共祖先怎么得到
- 第一时间想到的是,求两个节点到root的路径,然后取到公共部分的最后一个节点返回
- 但是我并没有第一时间这样做,而是又观察了一下最近的公共祖先的特点,即代码中所示
===
更新时间: 2020-08-30 Sun 23:32
Emacs 27.1 (Org mode 9.3.7)
===
天行健,君子以自强不息。
地势坤,君子以厚德载物。
===