色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

刪除二叉搜索樹中的節(jié)點(diǎn)

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:五分鐘學(xué)算法 ? 2020-06-23 10:33 ? 次閱讀

今天分享的題目來源于 LeetCode 第 450 號問題:刪除二叉搜索樹中的節(jié)點(diǎn)。雖然它的難度是中等,但實(shí)際上很好理解,請往下看!

題目描述

給定一個二叉搜索樹的根節(jié)點(diǎn)root和一個值key,刪除二叉搜索樹中的key對應(yīng)的節(jié)點(diǎn),并保證二叉搜索樹的性質(zhì)不變。返回二叉搜索樹(有可能被更新)的根節(jié)點(diǎn)的引用。

一般來說,刪除節(jié)點(diǎn)可分為兩個步驟:

首先找到需要刪除的節(jié)點(diǎn);

如果找到了,刪除它。

說明:要求算法時(shí)間復(fù)雜度為 O(h),h 為樹的高度。

示例:

root=[5,3,6,2,4,null,7] key=3 5 / 36 / 247 給定需要刪除的節(jié)點(diǎn)值是3,所以我們首先找到3這個節(jié)點(diǎn),然后刪除它。 一個正確的答案是[5,4,6,2,null,null,7], 如下圖所示。 5 / 46 / 27 另一個正確答案是[5,2,6,null,4,null,7]。 5 / 26 47

題目解析

在二叉搜索樹上刪除一個節(jié)點(diǎn),這道題目有一個隱含的條件,就是樹上節(jié)點(diǎn)的值不重復(fù)。

另外題目還要求時(shí)間復(fù)雜度需要保證 O(h) 這里的 h 表示的是二叉樹的高度。

其實(shí)這個題目是分成兩個步驟的,第一個是找到對應(yīng)的節(jié)點(diǎn),第二個是刪除節(jié)點(diǎn)。

因?yàn)槭嵌嫠阉鳂?,對于樹上每個節(jié)點(diǎn)來說,其右子樹的節(jié)點(diǎn)都要大于其左子樹的節(jié)點(diǎn),那么要找對應(yīng)節(jié)點(diǎn),我們可以從根節(jié)點(diǎn)開始,一路比較,大的話就去右邊找,小的話就去左邊找,這樣每次我們都往下,可以保證時(shí)間復(fù)雜度是 O(h)。

當(dāng)我們找到了要刪除的節(jié)點(diǎn),在刪除這一步就會有很多的細(xì)節(jié),主要是因?yàn)槲覀冃枰{(diào)整余下的結(jié)構(gòu),以維持二叉搜索樹的性質(zhì)。

針對這個問題,我們可以分情況討論:

5 / 36 / 247 / 18

情況 1:當(dāng)刪除的節(jié)點(diǎn)沒有左右子樹,比如上圖的 4、8、1
這時(shí)直接刪除即可,樹依舊可以保持二叉搜索樹的性質(zhì)

情況 2:當(dāng)刪除的節(jié)點(diǎn)有左子樹沒有右子樹,比如上圖的 2
這時(shí)我們只需要將整個左子樹移到當(dāng)前位置即可
也就是將左子樹的根節(jié)點(diǎn)放到刪除節(jié)點(diǎn)的位置,其余不變

情況 3:當(dāng)刪除的節(jié)點(diǎn)沒有左子樹有右子樹,比如上圖的 6、7
這時(shí)我們只需要將整個右子樹移到當(dāng)前位置即可
也就是將右子樹的根節(jié)點(diǎn)放到刪除節(jié)點(diǎn)的位置,其余不變

情況 4:當(dāng)刪除的節(jié)點(diǎn)既有左子樹又有右子樹,比如上圖的 5、3
這時(shí)就有兩種方法供選擇:
去到左子樹中,找到值最大節(jié)點(diǎn),將右子樹全部移到這個節(jié)點(diǎn)下
去到右子樹中,找到值最小節(jié)點(diǎn),將左子樹全部移到這個節(jié)點(diǎn)下

通過上面的討論分析,我們有了大致的思路。在實(shí)現(xiàn)方面,我們可以借助遞歸來巧妙地達(dá)到刪除對應(yīng)節(jié)點(diǎn)的目的。

圖片描述

參考代碼

//五分鐘學(xué)算法 publicTreeNodedeleteNode(TreeNoderoot,intkey){ if(root==null){ returnnull; } //當(dāng)前遍歷到的節(jié)點(diǎn)大于要找的節(jié)點(diǎn),去左邊繼續(xù)找 if(root.val>key){ root.left=deleteNode(root.left,key); } //當(dāng)前遍歷到的節(jié)點(diǎn)小于要找的節(jié)點(diǎn),去右邊繼續(xù)找 elseif(root.val

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4629

    瀏覽量

    93193
  • 二叉樹
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    12362

原文標(biāo)題:五分鐘看懂一道中等難度的算法題

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-初識設(shè)備之設(shè)備組成和結(jié)構(gòu)

    的name和value。在設(shè)備,可描述的信息包括:一、CPU的數(shù)量和類別;、內(nèi)存基地址和大??;三、總線和橋;四、外設(shè)連接;五、中斷控制器和中斷使用情況;六、GPIO控制器和GPIO使用情況;七
    發(fā)表于 01-08 08:32

    飛凌嵌入式ElfBoard ELF 1板卡-初識設(shè)備之設(shè)備組成和結(jié)構(gòu)

    的name和value。在設(shè)備,可描述的信息包括:一、CPU的數(shù)量和類別;、內(nèi)存基地址和大小;三、總線和橋;四、外設(shè)連接;五、中斷控制器和中斷使用情況;六、GPIO控制器和GPIO使用情況;七
    發(fā)表于 01-07 09:16

    谷歌取消“站點(diǎn)鏈接搜索框”,適應(yīng)新搜索需求

    近日,谷歌發(fā)布了一則通知,決定取消搜索結(jié)果的“站點(diǎn)鏈接搜索框”。這一功能已經(jīng)陪伴了用戶十多年,它允許用戶在特定網(wǎng)站上進(jìn)行更深入的搜索,為許多網(wǎng)民提供了便利。然而,隨著時(shí)代的變遷和技術(shù)
    的頭像 發(fā)表于 10-23 11:20 ?372次閱讀

    邏輯組件的流程塊節(jié)點(diǎn)通常出于什么用途

    邏輯組件的流程塊節(jié)點(diǎn)是流程圖、狀態(tài)圖、序列圖等圖表的基本元素,它們用于表示業(yè)務(wù)流程、工作流程、算法步驟、系統(tǒng)狀態(tài)等。這些節(jié)點(diǎn)在軟件開發(fā)、項(xiàng)目管理、自動化控制、工程設(shè)計(jì)、科學(xué)研究等領(lǐng)
    的頭像 發(fā)表于 10-15 14:38 ?192次閱讀

    什么是默克爾(Merkle Tree)?如何計(jì)算默克爾根?

    01 默克爾的概念 默克爾(Merkle Tree)是一種特殊的二叉樹,它的每個節(jié)點(diǎn)都存儲了一個數(shù)據(jù)塊的哈希值。哈希值是一種可以將任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度的字符串的算法,它具有
    的頭像 發(fā)表于 09-30 18:22 ?1078次閱讀
    什么是默克爾<b class='flag-5'>樹</b>(Merkle Tree)?如何計(jì)算默克爾根?

    ubuntu刪除的文件怎么恢復(fù)

    在Ubuntu系統(tǒng),刪除的文件可以通過多種方法進(jìn)行恢復(fù)。本文將詳細(xì)介紹Ubuntu系統(tǒng)刪除文件的恢復(fù)方法,包括使用命令行工具、文件恢復(fù)軟件以及預(yù)防文件丟失的策略。本文將分為以下幾個
    的頭像 發(fā)表于 08-30 15:10 ?1738次閱讀

    節(jié)點(diǎn)電壓法流入節(jié)點(diǎn)電流怎么判斷正負(fù)

    節(jié)點(diǎn)電壓法(Node Voltage Method)是一種在電路分析中常用的方法,用于求解電路節(jié)點(diǎn)的電壓。在這種方法,我們通常選擇一個參考節(jié)點(diǎn)
    的頭像 發(fā)表于 08-06 17:24 ?2543次閱讀

    節(jié)點(diǎn)電壓法的實(shí)質(zhì)是什么

    節(jié)點(diǎn)電壓法(Node Voltage Method)是一種在電路分析中常用的方法,主要用于求解線性電路的電壓和電流。它基于基爾霍夫電流定律(KCL)和歐姆定律,通過建立節(jié)點(diǎn)電壓方程來求解電路
    的頭像 發(fā)表于 08-06 17:08 ?1174次閱讀

    修改“u-boot”設(shè)備的電源后,使用\"STM32CubeProgrammer\"下載會一直重復(fù)下載,為什么?

    我自己做的板子電源部分沒有使用\"stpmic\",而是使用分立式電源,我在移植OpenSTLinux(5.1.0)時(shí)遇到了問題,我修改“u-boot”設(shè)備的電源后
    發(fā)表于 07-23 07:57

    節(jié)點(diǎn)電壓法電壓源怎么處理

    節(jié)點(diǎn)電壓法(Node Voltage Method,簡稱NVM)是電路分析的一種基本方法,主要應(yīng)用于求解線性電路節(jié)點(diǎn)電壓。在節(jié)點(diǎn)電壓法
    的頭像 發(fā)表于 07-12 09:20 ?3452次閱讀

    指電極上覆蓋敏感材料的阻值計(jì)算

    覆蓋的敏感材料厚度超出指厚度時(shí)計(jì)算電阻,是否可以視作指電極指間電阻多個周期串聯(lián)后與超出指厚度部分敏感材料電阻并聯(lián)
    發(fā)表于 07-05 14:48

    什么是工業(yè)控制網(wǎng)絡(luò)節(jié)點(diǎn)?常用的節(jié)點(diǎn)有哪些

    工業(yè)控制網(wǎng)絡(luò)節(jié)點(diǎn)是指在工業(yè)控制網(wǎng)絡(luò),用于實(shí)現(xiàn)數(shù)據(jù)采集、處理、傳輸和控制等功能的設(shè)備。它們是工業(yè)控制系統(tǒng)的重要組成部分,對于保證工業(yè)生產(chǎn)的穩(wěn)定性、可靠性和高效性具有重要意義。 一、工業(yè)控制網(wǎng)絡(luò)
    的頭像 發(fā)表于 06-11 10:36 ?1225次閱讀

    服務(wù)器數(shù)據(jù)恢復(fù)—存儲卷被刪除后重建如何恢復(fù)被刪除卷的數(shù)據(jù)?

    服務(wù)器存儲數(shù)據(jù)恢復(fù)環(huán)境: 某品牌FlexStorage P5730服務(wù)器存儲,存儲中有一組由24塊硬盤組建的RAID5陣列,包括1塊熱備硬盤。 服務(wù)器存儲故障: 存儲的2個卷被刪除,刪除之后重建了一個新卷。需要恢復(fù)之
    的頭像 發(fā)表于 06-05 11:03 ?717次閱讀

    谷歌Play商店強(qiáng)制推行應(yīng)用賬戶刪除政策

     如今,該新規(guī)已正式施行,Google將開始在應(yīng)用詳情展示刪除賬戶方式。Android Authority報(bào)道指出,“賬戶可刪除”標(biāo)識已出現(xiàn)在應(yīng)用數(shù)據(jù)安全部分。
    的頭像 發(fā)表于 05-27 17:49 ?1306次閱讀

    Windows驅(qū)動器分區(qū)可以刪除

    可以刪除Windows驅(qū)動器分區(qū)。刪除驅(qū)動器分區(qū)的操作可以在Windows操作系統(tǒng)的磁盤管理工具完成。然而,在執(zhí)行此操作之前,請務(wù)必提前備份重要的數(shù)據(jù),以免丟失。 以下是
    的頭像 發(fā)表于 02-14 17:00 ?1580次閱讀
    主站蜘蛛池模板: ass亚洲熟妇毛耸耸pics | 伊人青青青 | 日韩一区二区三区精品 | 日韩一区二区三区精品 | 里番acg纲手的熟蜜姬训练场 | 蜜柚在线观看免费高清官网视频 | 乳女教师欲乱动漫无修版动画 | 中文字幕无线观看不卡网站 | 亚洲精品欧美精品中文字幕 | 日韩欧美一区二区三区在线视频 | 久久成人免费观看全部免费 | 伊人久久大香线蕉综合影 | av在线不卡中文网 | 久久影院午夜理论片无码 | 18和谐综合色区 | 色综合伊人色综合网站 | 在线观看国产日韩 | 久久re亚洲在线视频 | 麻豆一二三四区乱码 | 亚洲欧美免费无码专区 | 稚嫩挤奶h调教h | 奇米狠狠一区二区三区 | 毛片999 | 午夜深情在线观看免费 | 小学生偷拍妈妈视频遭性教育 | 成人国产在线24小时播放视频 | 毛片大片免费看 | x8国产精品视频 | 不卡一区二区高清观看视频 | 美女张开腿让男人桶爽无弹窗 | 大学生第一次破女在线观看 | 伦理电影v男人天堂 | 小小水蜜桃视频高清在线播放 | 亚洲AV电影天堂男人的天堂 | 国产AV亚洲国产AV麻豆 | 久久久久久久久久久福利观看 | 亚洲国产三级在线观看 | 国产久久热99视频 | 成年人视频在线免费看 | 国产精品高潮呻吟AV久久96 | 毛片在线不卡 |