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)

    ===

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

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

    ===

  • 相关阅读:
    删除文件目录的两种方式
    求两个整数的最大公约数?
    MemCache在Windows环境下的搭建及启动
    hello cnblogs
    Extjs gridPanel可复制配置(转)
    命令模式、状态模式、责任链模式区别(转)
    UML类图几种关系的总结(转)
    观察者模式(转)
    Java之建造者模式(Builder Pattern)(转)
    Java设计模式之工厂方法模式(转) 实现是抽象工厂?
  • 原文地址:https://www.cnblogs.com/wudanyang/p/13579891.html
Copyright © 2011-2022 走看看