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

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

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

本文轉(zhuǎn)載自微信公眾號「三分鐘學(xué)前端」,作者sisterAn。轉(zhuǎn)載本文請聯(lián)系三分鐘學(xué)前端公眾號。

關(guān)于樹基礎(chǔ)看這里:適合初學(xué)者的樹

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

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

例如,給定如下二叉樹: 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. 解釋: 節(jié)點 5 和節(jié)點 1 的最近公共祖先是節(jié)點 3。 

示例 2:

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

說明:

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

解答:遞歸實現(xiàn)

解題思路:

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

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

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

代碼實現(xiàn):

  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. }; 

復(fù)雜度分析:

時間復(fù)雜度:O(n)

 

空間復(fù)雜度:O(n)

 

責任編輯:武曉燕 來源: 三分鐘學(xué)前端
相關(guān)推薦

2021-08-27 11:36:44

二叉樹回溯節(jié)點

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數(shù)據(jù)結(jié)構(gòu)前端

2021-04-28 20:12:27

數(shù)據(jù)結(jié)構(gòu)創(chuàng)建

2021-04-19 07:47:42

數(shù)據(jù)結(jié)構(gòu)二叉樹Tree

2021-04-20 08:37:14

數(shù)據(jù)結(jié)構(gòu)二叉樹

2009-08-11 13:29:57

C#二叉樹遍歷

2020-12-30 08:35:34

貪心算法監(jiān)控

2022-10-26 23:58:02

二叉樹數(shù)組算法

2021-03-17 08:19:22

二叉樹LeetCode

2021-10-12 09:25:11

二叉樹樹形結(jié)構(gòu)

2021-03-22 08:23:29

LeetCode二叉樹節(jié)點

2023-05-08 15:57:16

二叉樹數(shù)據(jù)結(jié)構(gòu)

2020-11-02 09:15:47

算法與數(shù)據(jù)結(jié)構(gòu)

2018-03-15 08:31:57

二叉樹存儲結(jié)構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲精品国产电影 | 午夜亚洲 | 日本三级电影在线观看视频 | 国产亚洲欧美在线 | 精品国产不卡一区二区三区 | 最新av中文字幕 | 男人天堂色| 欧美久久视频 | 超碰97免费观看 | 二区在线观看 | 亚洲精品成人网 | 国产精品欧美一区二区三区 | 欧美精品一二三区 | 国产亚洲欧美日韩精品一区二区三区 | 99久久精品免费看国产小宝寻花 | 日本一区二区三区免费观看 | h视频免费看 | 精品国产一区二区三区久久久蜜月 | 欧美日韩精品一区二区 | 91.色| 欧美888 | 日韩中文字幕 | 日韩成人免费视频 | 欧洲精品一区 | 天天影视亚洲综合网 | 国产片侵犯亲女视频播放 | 天堂一区在线观看 | 蜜臀久久 | 免费成人高清在线视频 | 亚洲国产精品成人无久久精品 | 亚洲欧洲日本国产 | 日韩在线一区二区 | 日韩在线电影 | 亚洲 自拍 另类 欧美 丝袜 | 91精品国产综合久久香蕉麻豆 | 日韩中文字幕在线视频观看 | 久久久久久亚洲国产精品 | 91精品国产综合久久久久久漫画 | 欧美精品电影一区 | 日本一区二区三区免费观看 | 91精品国产91久久久久游泳池 |