91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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);

如果找到了,刪除它。

說明:要求算法時間復(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ù)。

另外題目還要求時間復(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)開始,一路比較,大的話就去右邊找,小的話就去左邊找,這樣每次我們都往下,可以保證時間復(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
這時直接刪除即可,樹依舊可以保持二叉搜索樹的性質(zhì)

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

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

情況 4:當(dāng)刪除的節(jié)點(diǎn)既有左子樹又有右子樹,比如上圖的 5、3
這時就有兩種方法供選擇:
去到左子樹中,找到值最大節(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)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

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

    關(guān)注

    0

    文章

    74

    瀏覽量

    12935

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入理解設(shè)備chosen節(jié)點(diǎn):固件與內(nèi)核的“配置橋梁”

    在嵌入式 Linux 開發(fā),設(shè)備(Device Tree)是連接硬件與內(nèi)核的關(guān)鍵紐帶。但有一個節(jié)點(diǎn)很特殊 —— 它不描述任何硬件模塊,卻直接決定內(nèi)核能否正常啟動,這就是chosen節(jié)點(diǎn)
    的頭像 發(fā)表于 02-09 16:36 ?139次閱讀
    深入理解設(shè)備<b class='flag-5'>樹</b>chosen<b class='flag-5'>節(jié)點(diǎn)</b>:固件與內(nèi)核的“配置橋梁”

    無線傾角傳感器在古監(jiān)測的應(yīng)用:以科技守護(hù)活文物的結(jié)構(gòu)安全

    無線傾角傳感器在古監(jiān)測的應(yīng)用:以科技守護(hù)活文物的結(jié)構(gòu)安全
    的頭像 發(fā)表于 01-09 11:38 ?660次閱讀
    無線傾角傳感器在古<b class='flag-5'>樹</b>監(jiān)測<b class='flag-5'>中</b>的應(yīng)用:以科技守護(hù)活文物的結(jié)構(gòu)安全

    億緯鋰能與杭集團(tuán)達(dá)成戰(zhàn)略合作

    近日,億緯鋰能與杭集團(tuán)2025年戰(zhàn)略研討會暨戰(zhàn)略合作協(xié)議簽約儀式在杭州舉行。億緯鋰能副總裁、商用車電池產(chǎn)品線總裁江吉兵博士,億緯鋰能商用車電池產(chǎn)品線國內(nèi)銷售部總經(jīng)理井振江,杭集團(tuán)董事、副總經(jīng)理兼
    的頭像 發(fā)表于 01-04 18:18 ?1085次閱讀

    EtherCAT總線節(jié)點(diǎn)順序錯誤問題詳解

    ,總線節(jié)點(diǎn)順序錯誤是工程師常遇到的典型問題之一。本文將深入剖析該問題的成因、診斷方法及解決方案,并結(jié)合實(shí)際案例提供系統(tǒng)性指導(dǎo)。 一、EtherCAT總線拓?fù)渑c節(jié)點(diǎn)順序原理 EtherCAT支持線型、
    的頭像 發(fā)表于 12-27 07:39 ?57次閱讀
    EtherCAT總線<b class='flag-5'>節(jié)點(diǎn)</b>順序錯誤問題詳解

    淘寶圖片搜索商品API指南

    一、摘要 淘寶圖片搜索商品API是基于圖像識別技術(shù)的智能搜索接口,允許用戶通過上傳商品圖片來搜索相似或同款商品。該接口廣泛應(yīng)用于比價、找同款、商品識別等電商場景。 、接口概述 1.功
    的頭像 發(fā)表于 12-08 14:26 ?1198次閱讀

    線性搜索搜索介紹

    線性搜索(Linear Search):從數(shù)組的第一個元素開始,依次將當(dāng)前元素與目標(biāo)值進(jìn)行比較,直到找到目標(biāo)值或搜索完整個數(shù)組。 搜索(Binary Search):在有序數(shù)組
    發(fā)表于 12-01 07:36

    `lv_obj_tree.h` 在 **LVGL v9** 的位置和作用

    /core/lv_obj_tree.h 核心作用 這個文件是 LVGL 核心模塊的一部分,主要負(fù)責(zé) UI 對象的管理,包括: 對象的父子關(guān)系維護(hù)(添加、刪除子對象); 對象的遍歷(例如查找子對象、祖先
    發(fā)表于 11-13 15:49

    通過優(yōu)化代碼來提高M(jìn)CU運(yùn)行效率

    選擇時間復(fù)雜度低的算法。 根據(jù)訪問模式選擇數(shù)據(jù)結(jié)構(gòu)。頻繁查找用哈希表,有序數(shù)據(jù)用二叉樹等。 查表法:對于復(fù)雜的數(shù)學(xué)計算(如sin, log),或者協(xié)議解析,預(yù)先計算好結(jié)果存于數(shù)組,用空間換時間
    發(fā)表于 11-12 08:21

    按圖搜索1688商品的API接口

    ? ?在電商場景,按圖搜索商品功能(即通過上傳圖片查找相似商品)極大提升了用戶體驗(yàn)和效率。1688作為阿里巴巴旗下的批發(fā)平臺,雖然沒有直接公開的“按圖搜索”API,但我們可以借助阿里云的圖像
    的頭像 發(fā)表于 10-22 15:05 ?615次閱讀
    按圖<b class='flag-5'>搜索</b>1688商品的API接口

    請問rtt studio 的文件夾打紅什么意思?

    rtt studio 的文件夾打紅什么意思?而且文件夾里面實(shí)際是有文件的,但是瀏覽不出來。
    發(fā)表于 09-18 06:34

    產(chǎn)品搜索與過濾API接口

    ? 在現(xiàn)代化電子商務(wù)和應(yīng)用程序開發(fā),高效的產(chǎn)品搜索與過濾功能至關(guān)重要。它能幫助用戶快速找到所需商品,提升用戶體驗(yàn)和轉(zhuǎn)化率。產(chǎn)品搜索與過濾API接口作為后端服務(wù)的核心組件,允許開發(fā)者通過編程方式實(shí)現(xiàn)
    的頭像 發(fā)表于 07-24 14:35 ?562次閱讀
    產(chǎn)品<b class='flag-5'>搜索</b>與過濾API接口

    下一代高速芯片晶體管解制造問題解決了!

    在半導(dǎo)體工藝演進(jìn)到2nm,1nm甚至0.7nm等節(jié)點(diǎn)以后,晶體管結(jié)構(gòu)該如何演進(jìn)?2017年,imec推出了片晶體管(forksheet),作為環(huán)柵(GAA)晶體管的自然延伸。不過,產(chǎn)業(yè)對其可制造
    發(fā)表于 06-20 10:40

    刪除工作空間中的工程項(xiàng)目

    首先我們先刪除剛剛新建的工程模板。
    的頭像 發(fā)表于 05-06 09:27 ?1434次閱讀
    <b class='flag-5'>刪除</b>工作空間中的工程項(xiàng)目

    電機(jī)溫度監(jiān)測系統(tǒng)低功耗無線節(jié)點(diǎn)模塊設(shè)計

    完整資料~~~*附件:電機(jī)溫度監(jiān)測系統(tǒng)低功耗無線節(jié)點(diǎn)模塊設(shè)計.pdf 【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 04-30 00:42

    使用AD2428時,通過主節(jié)點(diǎn)發(fā)現(xiàn)從節(jié)點(diǎn)的過程遇到的問題求解

    在使用AD2428時,通過主節(jié)點(diǎn)發(fā)現(xiàn)從節(jié)點(diǎn)的過程,遇到以下問題: 按照手冊中將0x9寄存器配置成0x1,讀回0x17寄存器的值為0x29,且主節(jié)點(diǎn)未發(fā)現(xiàn)從
    發(fā)表于 04-15 07:14