zoukankan      html  css  js  c++  java
  • [leetCode]剑指 Offer 68

    在这里插入图片描述

    思路

    从根节点开始遍历:

    • 如果当前节点大于p,q 那么p,q的最近公共节点在当前节点的左子树
    • 如果当前节点小于p,q 那么p,q的最近公共节点在当前节点的右子树
    • 如果当前节点的值不满足上述两条要求,那么说明当前节点就是「分岔点」。此时,pp 和 qq 要么在当前节点的不同的子树中,要么其中一个就是当前节点。

    递归

    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            if (root.val > p.val && root.val > q.val) 
                return lowestCommonAncestor(root.left, p, q);
            if (root.val < p.val && root.val < q.val) 
                return lowestCommonAncestor(root.right, p, q);
            return root;
        }
    }
    

    循环

    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            TreeNode ancestor = root;
            while (true) {
                if (ancestor.val > p.val && ancestor.val > q.val)
                    ancestor = ancestor.left;
                else if (ancestor.val < p.val && ancestor.val < q.val)
                    ancestor = ancestor.right;
                else 
                    break;
            }
            return ancestor;
        }
    }
    
  • 相关阅读:
    python--Pandas(一)
    Orcale(一)
    三、显示博客信息
    二、Django需要的知识点
    一、Django初级
    mysql修改密码
    python更新mysql数据
    python查询mysql数据
    python与mysql的连接过程
    python如果想输出原格式的内容,可以加''' ''',占位符使用方式
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859921.html
Copyright © 2011-2022 走看看