1 2 3 4 5順序插入,形成一個紅黑樹

紅黑樹的特性與優點

紅黑樹是一種自平衡的二叉搜索樹,通過額外的顏色標記和平衡性約束,確保樹的高度始終保持在 O(log n)。其核心特性如下:

  1. 每個節點要么是紅色,要么是黑色
  2. 根節點和葉子節點(NIL節點)是黑色
  3. 紅色節點的子節點必須是黑色(不能有兩個連續的紅色節點)。
  4. 從任一節點到其每個葉子的路徑都包含相同數目的黑色節點(黑高平衡)。

這些特性使得紅黑樹在插入、刪除時通過顏色調整和旋轉操作維持平衡,避免了BST的退化問題。

順序插入12345

       2(B)/   \1(B)  4(B)/ \3(R)5(R)

步驟解釋:

  1. 插入1:根節點,設為黑色。

    • 1(B)
  2. 插入2:作為1的右子節點,設為紅色。無沖突。

      1(B)\2(R)
    
  3. 插入3:作為2的右子節點,設為紅色。此時父節點2(紅)與子節點3(紅)沖突。

    • 調整:左旋祖父節點1,將2提升為根并設為黑色,1和3設為紅色。
        2(B)/   \1(R)  3(R)
    
  4. 插入4:作為3的右子節點,設為紅色。父節點3(紅)與子節點4(紅)沖突。

    • 調整:顏色翻轉(父節點3和叔叔節點1變黑,祖父節點2變紅),最后根保持黑色。
        2(B)/   \1(B)  3(B)\4(R)
    
  5. 插入5:作為4的右子節點,設為紅色。父節點4(紅)與子節點5(紅)沖突。

    • 調整:左旋祖父節點3,將4設為黑色,3設為紅色。
        2(B)/   \1(B)  4(B)/ \3(R)5(R)
    

驗證規則:

  • 根為黑色:滿足。
  • 紅色節點無紅色子節點:3?和5?的子節點均為NIL(黑)。
  • 所有路徑黑色節點數相同:每條路徑均為2個黑色節點(例如:2→1→NIL2→4→3→NIL)。

該結構嚴格遵循紅黑樹的五條性質,是一棵有效的紅黑樹。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79238.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微服務6大拆分原則

微服務6大拆分原則 微服務拆分是指將一個大型應用程序拆分成獨立服務的過程,在微服務拆分時,需要考慮以下6大微服務拆分原則 一、單一職責原則 微服務單一職責原則,是指每個微服務應該專注于解決一個明確定義的業務領域或功能,…

java: Compilation failed: internal java compiler error 報錯解決方案

java: Compilation failed: internal java compiler error 報錯解決方案 如下圖所示: 在編譯的時候提示 java: Compilation failed: internal java compiler error 原因:內部 java 編譯錯誤,一般是編譯版本不匹配。 問題解決 項目中有以下設置JDK版本…

介紹一下ReentrantLock 跟 Synchronized 區別

ReentrantLock 跟 Synchronized 區別 面試回答: 相同點: synchronized 和 ReentrantLock 都是用來保護資源線程安全的。 都可以保證可見性。 synchronized 和 ReentrantLock 都擁有可重入的特點。 從基本語義和概念上說 synchronized: Java 內建的…

第7次課 棧A

課堂學習 棧(stack) 是一種遵循先入后出邏輯的線性數據結構。 我們可以將棧類比為桌面上的一摞盤子,如果想取出底部的盤子,則需要先將上面的盤子依次移走。我們將盤子替換為各種類型的元素(如整數、字符、對象等&…

ts裝飾器

TypeScript 裝飾器是一種特殊類型的聲明,能夠被附加到類聲明、方法、訪問符、屬性或參數上。它本質上是一個函數,會在運行時被調用,并且被裝飾的聲明信息會作為參數傳遞給裝飾器函數。 裝飾器的分類 類裝飾器 類裝飾器作用于類構造函數&…

【金倉數據庫征文】政府項目數據庫遷移:從MySQL 5.7到KingbaseES的蛻變之路

摘要:本文詳細闡述了政府項目中將 MySQL 5.7 數據庫遷移至 KingbaseES 的全過程,涵蓋遷移前的環境評估、數據梳理和工具準備,遷移實戰中的數據源與目標庫連接配置、遷移任務詳細設定、執行遷移與過程監控,以及遷移后的質量驗證、系…

VB與Excel無縫連接實現指南

一、前期準備 引用Excel對象庫: 在VB開發環境中,點擊"項目"→"引用" 勾選"Microsoft Excel XX.X Object Library"(XX.X代表版本號) 創建Excel應用程序對象: vb Dim xlApp As Excel.…

【MySQL】數據庫、數據表的基本操作

個人主頁:Guiat 歸屬專欄:MySQL 文章目錄 1. MySQL基礎命令1.1 連接MySQL1.2 基本命令概覽 2. 數據庫操作2.1 創建數據庫2.2 查看數據庫2.3 選擇數據庫2.4 修改數據庫2.5 刪除數據庫2.6 數據庫備份與恢復 3. 表操作基礎3.1 創建表3.2 查看表信息3.3 創建…

cursor sign in 網頁登錄成功,sursor軟件里一直登陸不成功沒有登陸信息

今天在使用cursor登陸無法登陸,點擊sigin in打開網址登陸成功后,軟件里一直無法顯示登陸信息。 點擊sigin in 在網址登陸成功后 解決辦法: 方法1.設置windows默認應用為chrome. 辦法2: 刪除代理 cursor上ctrl, 打開設置,找到…

深入理解卷積神經網絡的輸入層:數據的起點與預處理核心

內容摘要 本文圍繞卷積神經網絡輸入層展開,詳細介紹其在網絡中的重要作用,包括接收不同領域數據的形式及傳遞數據的過程。深入解讀數據預處理的關鍵操作,如去均值、歸一化和PCA/白化。助力讀者透徹理解輸入層,為構建高效卷積神經…

解決 MySQL 數據庫無法遠程連接的問題

在使用 MySQL 數據庫時,遇到這樣的問題: 本地可以連接 MySQL,但遠程機器連接時,總是報錯 Host ... is not allowed to connect to this MySQL server。 這通常是因為 MySQL 的用戶權限或配置限制了遠程訪問。 1. 登錄 MySQL 數據…

MCP認證全解析:從零到微軟認證專家

MCP認證全解析:從零到微軟認證專家 什么是MCP認證? Microsoft Certified Professional(MCP)是由微軟官方頒發的技術認證,旨在驗證IT從業者在微軟技術棧(如Azure、Windows Server、SQL Server等&#xff0…

驅動開發系列57 - Linux Graphics QXL顯卡驅動代碼分析(四)顯示區域更新

一:概述 前面在介紹了顯示模式設置(分辨率,刷新率)之后,本文繼續分析下,顯示區域的繪制,詳細看看虛擬機的畫面是如何由QXL顯卡繪制出來的。 二:相關數據結構介紹 struct qxl_moni…

遠程調用負載均衡LoadBalancer

1. 什么是負載均衡 負載均衡就是將負載(工作任務,訪問請求)進行分攤到多個操作單元(服務器,組件)上進行執行。 根據負載均衡發生位置的不同,一般分為服務端負載均衡和客戶端負載均衡。 服務端負載均衡:指的…

【深度學習】【目標檢測】【Ultralytics-YOLO系列】YOLOV3核心文件detect.py解讀

【深度學習】【目標檢測】【Ultralytics-YOLO系列】YOLOV3核心文件detect.py解讀 文章目錄 【深度學習】【目標檢測】【Ultralytics-YOLO系列】YOLOV3核心文件detect.py解讀前言if name ‘main’parse_opt函數main函數run函數不同命令參數的推理結果常規推理命令推理命令(新增…

NextPolish1.4.1 安裝與使用-bioinformatics tools54

01 簡介 NextPolish 是一個用于修正由低準確度長讀段(如 ONT 或 CLR)組裝出來的基因組序列中堿基錯誤(SNV/Indel)的工具。它支持: 僅使用短讀段 僅使用長讀段 同時使用短讀段與長讀段 NextPolish 包含兩個核心模塊…

Vue3 el-tree:全選時只返回父節點,半選只返回勾選中的節點(省-市區-縣-鎮-鄉-村-街道)

需求原因:全選時,傳給接口的code數據太多了; 如果加上 check-strictly 父節點與子節點無關聯,可以初步滿足需求 效果如下使用了check-strictly的話,tree就沒有了半選效果 不好的地方:用戶體驗感不好&#x…

使用 docker 安裝 nacos3.x

一、安裝 nacos 1.拉取鏡像 使用如下指令拉取鏡像 docker pull nacos/nacos-server 拉取完成后,可以使用以下命令查看是否拉取到對應的鏡像,默認拉取最新鏡像 docker images 2.新建掛載文件目錄 mkdir -p /home/ubuntu/nacos/conf/mkdir -p /home/…

高性能Python Web 框架--FastAPI 學習「基礎 → 進階 → 生產級」

以下是針對 FastAPI 的保姆級教程,包含核心概念、完整案例和關鍵注意事項,采用「基礎 → 進階 → 生產級」的三階段教學法: 一、FastAPI介紹 FastAPI 是一個現代化的、高性能的 Python Web 框架,專門用于構建 APIs(應…

H2 Database Select 語句執行流程

H2 Database Select 語句執行流程 使用 // CREATE TABLE IF NOT EXISTS test(id INT primary key, name VARCHAR(255)) // insert into test(id, name) values(1, name1), (2, name2), (3, name3), (4, name4); String sql "SELECT * FROM test where id > 1 and na…