18K+ 瀏覽量
在這裡,我們將瞭解圖的 DFS 和 BFS 演算法的不同應用。DFS 或深度優先搜尋在不同的地方使用。一些常見的用途是 -如果我們在無權圖上執行 DFS,那麼它將為所有對最短路徑樹建立最小生成樹我們可以使用 DFS 檢測圖中的迴圈。如果我們在 BFS 期間獲得一條後向邊,那麼一定存在一個迴圈。使用 DFS,我們可以在兩個給定頂點 u 和 v 之間找到路徑。可以使用拓撲排序來安排給定作業之間依賴關係的作業。拓撲排序 ... 閱讀更多
46K+ 瀏覽量
在本節中,我們將瞭解什麼是圖資料結構,以及它的遍歷演算法。圖是一種非線性資料結構。它由一些節點及其連線的邊組成。邊可以是有向的或無向的。該圖可以表示為 G(V, E)。以下圖可以表示為 G({A, B, C, D, E}, {(A, B), (B, D), (D, E), (B, C), (C, A)})圖有兩種型別的遍歷演算法。它們被稱為廣度優先搜尋和深度優先搜尋。廣度優先搜尋 (BFS)廣度優先搜尋 (BFS) 遍歷是一種演算法,... 閱讀更多
602 瀏覽量
二叉搜尋樹是具有某些屬性的二叉樹。這些屬性如下所示 -每個二叉搜尋樹都是一個二叉樹每個左孩子都將持有小於根的值每個右孩子都將持有大於根的值理想的二叉搜尋樹不會重複相同的數值。假設我們有一棵這樣的樹 -這棵樹是一棵二叉搜尋樹。它遵循所有提到的屬性。如果我們以中序遍歷模式遍歷元素,我們可以得到 5、8、10、15、16、20、23。讓我們看一段程式碼來了解如何在... 閱讀更多
428 瀏覽量
在本節中,我們將瞭解二叉搜尋樹的先序遍歷技術(遞迴)。假設我們有一棵這樣的樹 -遍歷順序將如下所示:10、5、8、16、15、20、23演算法先序遍歷(根):開始 如果根不為空,則 列印根的值 先序遍歷(根的左子樹) 先序遍歷(根的右子樹) 結束如果結束示例 即時演示#include using namespace std; class node{ public: int h_left, h_right, bf, value; node *left, *right; }; class tree{ private: node *get_node(int key); ... 閱讀更多
386 瀏覽量
在本節中,我們將瞭解二叉搜尋樹的後序遍歷技術(遞迴)。假設我們有一棵這樣的樹 -遍歷順序將如下所示:8、5、15、23、20、16、10演算法後序遍歷(根):開始 如果根不為空,則 後序遍歷(根的左子樹) 後序遍歷(根的右子樹) 列印根的值 結束如果結束示例 即時演示#include using namespace std; class node{ public: int h_left, h_right, bf, value; node *left, *right; }; class tree{ private: node *get_node(int key); ... 閱讀更多
929 瀏覽量
在本節中,我們將瞭解不同的遍歷演算法來遍歷二叉搜尋樹中存在的鍵。這些遍歷是中序遍歷、先序遍歷、後序遍歷和層序遍歷。假設我們有一棵這樣的樹 -中序遍歷順序將如下所示 - 5 8 10 15 16 20 23先序遍歷順序將如下所示 - 10 5 8 16 15 20 23後序遍歷順序將如下所示 - 8 5 15 23 20 16 10層序遍歷順序將如下所示 - 10、5、16、8、15、20、23演算法中序遍歷(根):開始 如果根不為空... 閱讀更多
4K+ 瀏覽量
在本節中,我們將瞭解二叉樹資料結構的一些重要屬性。假設我們有一棵這樣的二叉樹。一些屬性是 -第“l”層的節點最大數量為 $2^{l-1}$ 。這裡層級是從根節點到節點的路徑上的節點數,包括根節點本身。我們認為根節點的層級為 1。高度為 h 的二叉樹中存在的節點最大數量為 $2^{h}-1$ 。這裡高度是從根節點到葉節點路徑上的最大節點數。這裡我們認為只有一個... 閱讀更多
15K+ 瀏覽量
在這裡,我們將瞭解如何在計算機記憶體中表示二叉樹。有兩種不同的表示方法。這些是使用陣列和使用連結串列。假設我們有一棵這樣的樹 -陣列表示透過使用層序方式掃描元素來儲存樹資料。因此,它逐層儲存節點。如果缺少某些元素,則為其留出空白空間。上述樹的表示如下所示 -12345678910111213141510516-81520-------23索引 1 儲存根節點,它有兩個子節點 5 和 16,它們位於位置 2 和 3。一些子節點是... 閱讀更多
689 瀏覽量
在這裡,我們將瞭解陣列資料結構的一些基本操作。這些操作是 -遍歷插入刪除搜尋更新遍歷是掃描陣列的所有元素。插入操作是在陣列的給定位置新增一些元素,刪除是從陣列中刪除元素並在刪除後更新其他元素的相應位置。搜尋是在陣列中查詢存在的某個元素,更新是在給定位置更新元素的值。讓我們看一個 C++ 示例程式碼以更好地理解。示例 即時演示#include #include using namespace std; main(){ vector arr; //插入元素 ... 閱讀更多
897 瀏覽量
均攤分析這種分析方法用於處理某些操作偶爾會非常慢,但大多數頻繁執行的操作速度很快的情況。在資料結構中,我們經常需要對雜湊表、不相交集等進行均攤分析。在雜湊表中,大部分情況下搜尋的時間複雜度為 O(1),但有時會執行 O(n) 的操作。當我們想要在雜湊表中搜索或插入元素時,大多數情況下都是常數時間操作,但當發生衝突時,需要花費 O(n) 的時間進行衝突解決。聚合方法聚合方法用於... 閱讀更多