今天繼續豐富紅黑樹,我們繼續上乙個部落格
今天寫紅黑樹的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...