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)

    ===

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

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

    ===

  • 相关阅读:
    经典的Java基础面试题集锦
    2016春招Android开发实习生(网易传媒)笔试
    十三、集合点和事务
    十一、LoadRunner组成和工作原理
    Java+selenium之WebDriver常见特殊情况如iframe/弹窗处理(四)
    修改jar包内容并打包上传到私服
    Information:java: Multiple encodings set for module chunk platf "GBK" will be used by compile
    十、创建、运行和监控测试场景
    在gitlab新建分支,IDEA切换时找不到的解决办法
    Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)
  • 原文地址:https://www.cnblogs.com/wudanyang/p/13579891.html
Copyright © 2011-2022 走看看