c 資料結構之查詢樹(六)

2021-10-06 09:28:02 字數 1279 閱讀 3421

1.建立一棵二叉查詢樹

2.按中序遍歷的要求顯示樹中每乙個結點的值

3.按要求去查詢某乙個結點

using namespace std;

#include #include #include #include #define maxsize 10

/*括號表示法

'('表示一顆左子樹的開始

')'表示一顆子樹的結束

','表示一顆右子樹的開始

單個字元:節點的值

構造方法:

先構造根節點,再構造左節點,繼續構造右節點

構造的過程中需要使用棧來儲存根節點

處理方法:

使用乙個變數ch去掃瞄括號表示法中的資料 :

若ch = '(',則將前面的建立的節點當做父節點壓入棧中,並且將k = 1,並且開始處理左節點;

若ch = ')',則表示左右孩子都處理完畢,退棧

若ch = ',',則表示開始處理右孩子,將k = 2;

若遇到k = 1,則將建立的節點作為左節點

若遇到k = 2, 則將建立的節點作為右節點

*/struct sqtree

;// 建立一顆二叉樹

void createtree(sqtree *& b, char * str)

else

}break;

} j++;

ch = str[j]; }}

// 查詢節點的值

sqtree * findsqtree(sqtree *& s, char data)

else if (s->data == data)

else

else

}}//求解二叉樹的高度

int depthsqtree(sqtree *& s)

else }

// 先序列印二叉樹

void preprintsqtree(sqtree *&s)

preprintsqtree(s->rchild);

cout << ")";

} }}//中序遍歷

void midprintsqtree(sqtree *&s)

} else

}}void backprintsqtree(sqtree *&s)

cout << "根節點";

cout << s->data; // 再輸出根節點

cout << " ";

} else

}}int main()

資料結構 六 樹

一直對樹的概念比較模糊,什麼紅黑樹啊,二叉搜尋樹等很多沒有乙個完整的知識體系結構,所以今天準備花一天的時間做乙個總結,力求搞明白樹的全部知識,不同樹之間的體系結構,以及一些常見應用。樹的定義有兩種方式。樹 tree 是包含n n 0 個結點的有窮集,其中 樹也可以這樣定義 樹是由根結點和若干顆子樹構...

資料結構 六 樹

未完待續 樹的概念 子樹 根結點 內部結點 葉結點或終端結點 深度或高度 根為第一層,根的孩子為第二層,依次類推,樹中結點最大的層數就稱為深度或高度。在樹中,如果任意乙個結點的子樹,從左到右都是有次序的,那麼這棵樹被稱為有序樹,反之則為無序樹。森林 由多棵不相交的樹的集合。樹的儲存結構 雙親表示法 ...

資料結構(六)樹

m棵互不相交的樹的集合 優先記錄每個節點的雙親 雙親是必有的,除了根節點 再針對特殊的需要,增加子節點或兄弟節點,重點在於尋找雙親節點,時間複雜度為o 1 該方法結合了陣列和鍊錶,以陣列為基礎儲存結構,每個元素再用鍊錶的方式記錄其雙親節點 以這棵樹為例 把每個結點的孩子結點排列起來 一般是從左往右 ...