235. 二叉搜尋樹的最近公共祖先-leetcode
阿新 • • 發佈:2020-08-28
235. 二叉搜尋樹的最近公共祖先-leetcode
Table of Contents
1 題目
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的路徑,然後取到公共部分的最後一個節點返回
- 但是我並沒有第一時間這樣做,而是又觀察了一下最近的公共祖先的特點,即程式碼中所示
Created: 2020-08-28 Fri 21:19