資料結構與演算法(C語言版) 紅黑樹02

2021-07-25 17:21:06 字數 1745 閱讀 4700

今天繼續豐富紅黑樹,我們繼續上乙個部落格

今天寫紅黑樹的insert功能

在標頭檔案中新增except.h和redblacktree.h在原始檔中新增testredblacktree.cpp

//返回異常

#ifndef except_h

#define except_h

#include

using namespace std;

class d***ception

virtual ~d***ception(){}

virtual

string tostring() const

virtual

string what() const

private:

string message;

};class duplicateitemexception :public d***ception

};#endif

//紅黑樹主要函式

#ifndef red_black_tree_h_

#define red_black_tree_h_

#include"except.h"

template

class redblacktree;

template

class redblacknode;

template

class redblacktree;

void insert(const comparable & x);

typedef redblacknodenode;

//private:為了測試,臨時變成公有的

public:

node *header;

node *nullnode;

node *current;//當前節點

node *parent;//父結點

node *grand;//祖父節點

node *great;//曾祖父節點

};template

class redblacknode

friend

class redblacktree;

};template

redblacktree::redblacktree(const comparable & neginf)

template

redblacktree::~redblacktree()

template

void redblacktree::insert(const comparable & x)

if (current != nullnode)

throw duplicateitemexception();

current = new node(x, nullnode, nullnode);

if (x < parent->element)

parent->left = current;

else

parent->right = current;

//自動平衡 -> 紅黑樹

}#endif

//測試紅黑樹

#include

#include

"redblacktree.h"

using namespace std;

int main()

C語言版資料結構演算法

c語言版資料結構演算法 c語言資料結構具體演算法 c語言資料結構演示軟體 演算法效率分析 線性表 棧和佇列 串 陣列和廣義表 樹和二叉樹 圖 查表 排序 動態儲存管理 上面兩個鏈結就是 資料結構 c語言版 嚴蔚敏教授嚴奶奶的書籍配套軟體 她的書看著很枯燥乏味,但真的非常嚴謹,嚴奶奶也很貼心的做了乙個...

《資料結構與演算法》之紅黑樹

二叉查詢樹對於某個節點而言,其左子樹的節點關鍵值都小於該節點關鍵值,右子樹的所有節點關鍵值都大於該節點關鍵值。二叉查詢樹作為一種資料結構,其查詢 插入和刪除操作的時間複雜度都為 o logn 底數為 2。但是我們說這個時間複雜度是在平衡的二叉查詢樹上體現的,也就是如果插入的資料是隨機的,則效率很高,...

資料結構與演算法 紅黑樹(二)

完善insert函式,讓它支援自動平衡 新插入的節點一定是紅色的 當新插入的節點是外部孫子節點使,進行一次單旋轉 當新插入的節點是內部孫子節點,進行一次雙旋轉 通用的旋轉函式 except.h異常類 pragma once include using namespace std class d ce...