成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

每日算法:二叉樹的最近公共祖先

開發 前端 算法
百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節點也可以是它自己的祖先)。”

本文轉載自微信公眾號「三分鐘學前端」,作者sisterAn。轉載本文請聯系三分鐘學前端公眾號。

關于樹基礎看這里:適合初學者的樹

給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。

百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節點也可以是它自己的祖先)。”

例如,給定如下二叉樹: root = [3,5,1,6,2,0,8,null,null,7,4]

示例 1:

  1. 輸入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 
  2. 輸出: 3 
  3. 解釋: 節點 5 和節點 1 的最近公共祖先是節點 3。 

示例 2:

  1. 輸入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4 
  2. 輸出: 5 
  3. 解釋: 節點 5 和節點 4 的最近公共祖先是節點 5。因為根據定義最近公共祖先節點可以為節點本身。 

說明:

  • 所有節點的值都是唯一的。
  • p、q 為不同節點且均存在于給定的二叉樹中。

解答:遞歸實現

解題思路:

如果樹為空樹或 p 、 q 中任一節點為根節點,那么 p 、 q 的最近公共節點為根節點

如果不是,即二叉樹不為空樹,且 p 、 q 為非根節點,則遞歸遍歷左右子樹,獲取左右子樹的最近公共祖先,

  • 如果 p 、 q 節點在左右子樹的最近公共祖先都存在,說明 p 、 q 節點分布在左右子樹的根節點上,此時二叉樹的最近公共祖先為 root
  • 若 p 、 q 節點在左子樹最近公共祖先為空,那 p 、q 節點位于左子樹上,最終二叉樹的最近公共祖先為右子樹上 p 、q 節點的最近公共祖先
  • 若 p 、 q 節點在右子樹最近公共祖先為空,同左子樹 p 、 q 節點的最近公共祖先為空一樣的判定邏輯
  • 如果 p 、 q 節點在左右子樹的最近公共祖先都為空,則返回 null

代碼實現:

  1. const lowestCommonAncestor = function(root, p, q) { 
  2.     if(root == null || root == p || root == q) return root 
  3.     const left = lowestCommonAncestor(root.left, p, q) 
  4.     const right = lowestCommonAncestor(root.right, p, q) 
  5.     if(left === nullreturn right 
  6.     if(right === nullreturn left 
  7.     return root 
  8. }; 

復雜度分析:

時間復雜度:O(n)

 

空間復雜度:O(n)

 

責任編輯:武曉燕 來源: 三分鐘學前端
相關推薦

2021-08-27 11:36:44

二叉樹回溯節點

2021-09-29 10:19:00

算法平衡二叉樹

2021-08-31 11:35:24

二叉搜索樹迭代法公共祖先

2021-09-15 07:56:32

二叉樹層次遍歷

2020-04-27 07:05:58

二叉樹左子樹右子樹

2013-07-15 16:35:55

二叉樹迭代器

2020-09-23 18:25:40

算法二叉樹多叉樹

2020-12-22 08:56:51

JavaScript數據結構前端

2021-04-19 07:47:42

數據結構二叉樹Tree

2021-04-20 08:37:14

數據結構二叉樹

2021-04-28 20:12:27

數據結構創建

2009-08-11 13:29:57

C#二叉樹遍歷

2020-12-30 08:35:34

貪心算法監控

2022-10-26 23:58:02

二叉樹數組算法

2021-03-17 08:19:22

二叉樹LeetCode

2021-10-12 09:25:11

二叉樹樹形結構

2021-03-22 08:23:29

LeetCode二叉樹節點

2023-05-08 15:57:16

二叉樹數據結構

2020-11-02 09:15:47

算法與數據結構

2018-03-15 08:31:57

二叉樹存儲結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品成人在线 | 亚洲一区二区网站 | 国产精品国产成人国产三级 | 欧美日韩精品久久久免费观看 | 91av在线电影| 亚洲自拍一区在线观看 | 欧美一区二区在线观看 | 国产在线视频在线观看 | 成人福利网站 | 久久久这里都是精品 | 精品国产乱码久久久久久1区2区 | 91亚洲国产成人久久精品网站 | 国产精品美女久久久久 | 国产精品不卡一区二区三区 | 亚洲一区 | 日韩中文字幕一区 | 伊人网在线看 | 日韩在线免费 | 久草在线青青草 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 国产一区二区在线免费观看 | 国产一区二区三区视频在线观看 | cao在线 | 97碰碰碰 | 久久成人激情 | 成人美女免费网站视频 | 国产精品高清在线 | 国产精品久久久久久久久久久免费看 | 99精品视频网 | 久久精品综合 | 99re热精品视频国产免费 | 欧美日韩在线播放 | 国产精品夜夜春夜夜爽久久电影 | 国产99久久久国产精品下药 | 亚洲一区二区三区四区五区中文 | 免费成人av | 一级黄色在线 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 欧美午夜久久 | 久久久久国产一区二区 | 99国产欧美 |