zoukankan      html  css  js  c++  java
  • 235. 二叉搜索树的最近公共祖先-leetcode

    235. 二叉搜索树的最近公共祖先-leetcode

    235. 二叉搜索树的最近公共祖先-leetcode

    Table of Contents

    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的路径,然后取到公共部分的最后一个节点返回
    • 但是我并没有第一时间这样做,而是又观察了一下最近的公共祖先的特点,即代码中所示

    ===

    作者: 吴丹阳 https://www.cnblogs.com/wudanyang

    更新时间: 2020-08-30 Sun 23:32

    Emacs 27.1 (Org mode 9.3.7)

    ===

    天行健,君子以自强不息。

    地势坤,君子以厚德载物。

    ===

  • 相关阅读:
    如何学习WindDbg
    如何在程序中嵌入google的V8 Javascript引擎
    理解程序内存
    如何学习Windows编程
    如何让窗口控件半透明
    Sessions, Window Stations and Desktops
    QQ截图时窗口自动识别的原理
    为什么设计模式在C++社区没有Java社区流行?
    当年写的俄罗斯方块
    如何判断一个C++对象是否在堆上
  • 原文地址:https://www.cnblogs.com/wudanyang/p/13579891.html
Copyright © 2011-2022 走看看