樹的資料結構相對來說也比較好理解。但由於為了查詢效率和儲存效率,又有多種樹形結構,對樹進行了限制。
如二叉樹,平衡二叉樹,紅黑樹,b樹,b+樹。其實也沒多少多複雜,只是願不願意花時間去研究。個人花了點花時間回顧了一下平衡二叉樹和二叉樹的理論和實現。紅黑樹和b樹,b+樹暫時沒有去研究。後續有空了再補。只是將具體的特點大概了了解了一下。
**是關於二叉樹和平衡二叉樹的**實現。
p4.h
#pragma once
#include #include using namespace std;
struct treenode
; treenode(int k, int v)
treenode *leftnode;
treenode *rightnode;
};class p4
;
p4.cpp
#include "p4.h"
p4::p4()
p4::~p4()
void p4::createtree()
void p4::createtreebypretree(vector& prevector)
previsit(m_root);
}treenode* p4::insertroot(treenode*&node,int key, int v)
else if (key < node->key)
else
}} else if (key > node->key)
else
}} int lefth = height(node->leftnode);
int right = height(node->rightnode);
node->height = right > lefth ? right+1 : lefth+ 1;
return node;}
treenode* p4::leftrotation(treenode* node)
treenode* p4::rightrotation(treenode*node)
treenode* p4::leftrightrotation(treenode *node)
treenode* p4::rightleftrotation(treenode* node)
void p4::previsit(treenode* node) }
void p4::mindvisit(treenode *node)
}void p4::endvisit(treenode* node)
}int p4::height(treenode *node)
else
}else }
/*從某個節點上刪除指定key的節點,並返回最終的樹的根節點*/
treenode* p4::remove(treenode*&node, int key)
else
}else
if (node->rightnode != nullptr)
delete(pre);
return nullptr;
}} else if (key > node->key)
else
}} else if (key < node->key)
else
}} return node;
} return nullptr;
}treenode *p4::getmaxnode(treenode *node)
return node;
} treenode *p4::getminnode(treenode *node)
return node;
}
矩陣分解相關知識回顧
大學線性代數課程中我們學習了很多關於矩陣分解的方法,這些在概率統計 統計機器學習等方面都有很多應用。設a是數域f上的n階矩陣,如果存在數域f中的乙個數 與數域上f的非零向量 使得 a 則稱 為a的乙個特徵值 根 eigenvalue 稱 為a的屬於特徵值 的特徵向量 eigenvector 顯然從上...
IP位址相關知識回顧
交換機 是組織區域網最重要的裝置,路由器實現連線內網和外網 區域網 一般稱為內網 簡單區域網的構成 交換機 網線 pc ip位址是乙個唯一標識,是一段以二進位制表示的網路編碼,由32位組成 11010010.01001001.10001100.00000110,用 點分 十進位制表示,便於記憶 21...
C 樹的相關知識
有4種遍歷二叉樹的常用方法 前序遍歷void preorder binarytreenode t 遞迴版 迭代使用棧來實現前序遍歷 void preorderiter treenode root 迭代版 stack stack stack.push root while stack.empty if...