樹的相關知識回顧

2021-10-25 06:09:41 字數 1876 閱讀 6787

樹的資料結構相對來說也比較好理解。但由於為了查詢效率和儲存效率,又有多種樹形結構,對樹進行了限制。

如二叉樹,平衡二叉樹,紅黑樹,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...