1. 程式人生 > 實用技巧 >235. 二叉搜尋樹的最近公共祖先-leetcode

235. 二叉搜尋樹的最近公共祖先-leetcode

235. 二叉搜尋樹的最近公共祖先-leetcode

235. 二叉搜尋樹的最近公共祖先-leetcode

Table of Contents

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的路徑,然後取到公共部分的最後一個節點返回
  • 但是我並沒有第一時間這樣做,而是又觀察了一下最近的公共祖先的特點,即程式碼中所示

Author: 吳丹陽

Created: 2020-08-28 Fri 21:19

Validate