235. 二叉搜索樹的最近公共祖先

https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/

  • 遞歸

    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if((root.val>p.val&&root.val<q.val)||(root.val<p.val&&root.val>q.val)||root==p||root==q) return root;
        if(root.val>p.val&&root.val>q.val) return lowestCommonAncestor(root.left,p,q);
        return lowestCommonAncestor(root.right,p,q);
    }
    
  • 非遞歸

    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            //如果根節(jié)點和p,q的差相乘是正數(shù),說明這兩個差值要么都是正數(shù)要么都是負數(shù),也就是說
            //他們肯定都位于根節(jié)點的同一側(cè),就繼續(xù)往下找
            while ((root.val - p.val) * (root.val - q.val) > 0)
                root = p.val < root.val ? root.left : root.right;
            //如果相乘的結(jié)果是負數(shù),說明p和q位于根節(jié)點的兩側(cè),如果等于0,說明至少有一個就是根節(jié)點
            return root;
    }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容