235. 二叉搜索树的最近公共祖先-leetcode
235. 二叉搜索树的最近公共祖先-leetcode
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的路径,然后取到公共部分的最后一个节点返回
- 但是我并没有第一时间这样做,而是又观察了一下最近的公共祖先的特点,即代码中所示
本文来自博客园,作者:吴丹阳-V,转载请注明原文链接:https://www.cnblogs.com/wudanyang/p/13579891.html