日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs)

發(fā)布時間:2024/7/23 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 思路 & 代碼
  • 代碼 & 思路
      • 二刷

思路 & 代碼

  • 應(yīng)該在二叉樹的最近公共祖先之前寫= =
  • 需要用到二叉搜索樹的特性

代碼 & 思路

  • 分成四種情況即可,具體見代碼注釋
  • 時間復(fù)雜度 O(logn)
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {// 1. 為p | q的情況if(root == p || root == q){return root;}// 2. p & q 都小于 root,轉(zhuǎn)換在左子樹找if(p.val < root.val && q.val < root.val){return lowestCommonAncestor(root.left, p, q);}// 3. 都大于,轉(zhuǎn)換右子樹找if(p.val > root.val && q.val > root.val){return lowestCommonAncestor(root.right, p, q);}// 4. 一個大一個小,root 就是答案return root;} }
  • 來個清晰版本的代碼
class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root == p || root == q){return root;}if(p.val < root.val && q.val < root.val){return lowestCommonAncestor(root.left, p, q);}if(p.val > root.val && q.val > root.val){return lowestCommonAncestor(root.right, p, q);}return root;} }

二刷

  • 注意:與二叉樹的最近公共祖先不同,這里可以利用二叉搜索樹的性質(zhì)
  • 當(dāng)然,用二叉樹來的方法也可以。
class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root == p || root == q) {return root;}if(p.val < root.val && q.val < root.val) {return lowestCommonAncestor(root.left, p, q);}else if(p.val > root.val && q.val > root.val) {return lowestCommonAncestor(root.right, p, q);}return root;} }

總結(jié)

以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。