C語言基礎 16 二叉樹 演算法

2021-08-08 11:52:40 字數 1541 閱讀 4970

如果單向線性鏈式物理結構中每個節點有可能找到多個其他節點則它就變成樹

樹里的所有節點可以分成幾層,不同層之間符合線性規律(任意兩層之間有前後順序)

樹的最上面一層只有乙個節點,這個節點叫做根節點

根節點可以代表整棵樹

樹里不同節點之間的直接關係叫做父子關係,其中靠近根節點的叫父節點,另外乙個節點叫子節點

樹里任何節點最多只能有乙個父節點(根節點沒有父節點)如果樹里任何節點最多只能有兩個子節點這種樹叫二叉樹

二叉樹是最簡單的樹

我們用左右區分二叉樹裡某個節點的兩個子節點,樹里任何節點都可以當作根節點看待,它可以代表它下面所有節點構成的樹

二叉樹裡任何節點都可以當作乙個新的二叉樹看待,乙個節點的左子節點作為根節點構成樹叫做這個節點的左子樹

任何一棵樹可以分成三部分看待:根節點,根節點的左子樹,根節點的右子樹

所有樹都可以轉換成二叉樹

依次處理樹中每個節點的操作叫樹的遍歷

樹的絕大多數操作都是通過遍歷實現的

樹的遍歷通常採用遞迴方式實現

遍歷樹的時候永遠先遍歷左子樹然後遍歷右子樹

根據根節點處理時機的不同把遍歷分成三種:

最開始處理根節點的遍歷叫前序遍歷,

最後處理根節點的遍歷叫後序遍歷, 中間

處理根節點的遍歷叫中序遍歷

演算法是解決一些常見問題的固定方法,同乙個問題可以用多個演算法來解決,不同的演算法適合用在不同的環境裡

排序演算法可以按照某種順序把一組數字排列好

排序演算法分很多次重新執行,每次把乙個數字放在合適位置上

為了把乙個數字放在合適的位置上既可以先確定數字然後找位置也可以先確定位置然後找數字

通過不斷交換兩個儲存區的內容最終把合適的數字放在合適的位置上

1.氣泡排序演算法

採用先確定位置然後找數字的方法,這個位置既可以在最前面也可以在最後面,氣泡排序中永遠對兩個相鄰儲存區的內容做順序調整

2.選擇排序演算法

也採用先確定位置然後找數字的方法,這個位置既可以在最前面也可以在最後面,把選定位置裡的數字和所有其他位置裡的數字依次進行順序調整,最終把合適數字放在選定位置裡

3.插入排序

採用先確定數字然後找位置的方法,每次把第乙個或最後乙個沒有排好序的數字作為選定數字,把它插入到已經排好序的數字中合適的位置裡,每次把選定數字和乙個相鄰儲存區的內容做順序調整,直到它被放在合適的位置上

4.快速排序演算法

採用先確定數字然後找位置的方法,從沒有處理過的所有數字兩端選擇乙個作為基準數字把基準數字和所有其他數字進行順序調整,比基準數字大的放一邊,比基準數字小的放另一邊,每次對沒有處理過的數字中兩端的數字進行順序調整(它們中一定包含基準數字)在調整完兩個數字的順序後把不是基準數字的數字排除在外

查詢演算法可以從一組數字裡找到某乙個數字所在的位置

1.順序查詢

依次把每個數字和要查詢的數字做對比,直到找到為止

如果數字的排列沒有規律就只能採用這種方法查詢

2.折半查詢演算法

如果所有數字已經按照某種順序排列好就可以用中間位置的數字和目標數字做對比,這樣可以一次排除掉一半的數字

重複以上過程就可以很快找到目標數字的位置

C語言演算法實驗 二叉樹

實驗內容與要求 問題描述 建立一棵二叉樹,試程式設計實現二叉樹的如下基本操作 1.按先序序列構造一棵二叉鍊錶表示的二叉樹t 2.對這棵二叉樹進行遍歷 先序 中序 後序遍歷,分別輸出結點的遍歷序列 3.求二叉樹的葉結點數目 要求 n設計要求 首先設計乙個含有多個選單項的主控選單程式,然後再為這些選單項...

C語言二叉樹

二叉樹使用鏈做結構,其結構體有儲存資料的變數和指向左右孩子的指標 1 typedef char elemtype 23 typedef struct bitreenodebitreenode,bitree 二叉樹的一般遍歷方法 假設先左子樹再右子樹 有3個,根節點作為訪問的先後條件。1 後序遍歷 2...

演算法基礎之二叉樹

本文主要包括樹相關的演算法,二叉樹結點基本結構如下 function treenode x 本文還會繼續更新。function depth proot var depth 0 var currdepth 0 dfs proot return depth function dfs node currd...