c 二叉樹建立

2021-09-11 20:15:19 字數 1716 閱讀 5558

二叉樹 就是首先得有乙個根節點.這個節點的入度為0也就是它只有子節點沒有父節點 如1號節點

每個節點又有乙個左兒子和乙個右兒子 當然也可以沒有

接下來就是建立.建立一棵樹得現有這棵樹的結點和樹根

首先來宣告乙個樹的結點

typedef struct node node;
當然 int data;這裡叫做資料域 也可以多寫一些.

然後就是樹根了

typedef struct  tree;
樹根建立完了然後就可以寫建立樹的函式了

void insert(tree* tree, int value)//建立樹

第乙個引數是這個樹的樹根。想想我們的鍊錶 如果頭插法的話是不是把頭傳到函式裡面就可以了

第二個節點是值 也就是 我們之前節點的data

第一行動態申請乙個空間因為是malloc 出來的所以在堆記憶體中是有例項的

不會隨著函式結束而釋放

建立出來以後讓左兒子和右兒子為null 讓指標初始化的時候指向null是乙個很好的習慣

然後結點建立出來就要把它連到樹裡面了。

如果這個樹是空樹我是不是可以讓樹根存下這個節點呢?

if (tree->root == null)//判斷樹是不是空樹

如果不是空樹的話我們可以給乙個約束條件

我們規定這個樹的父節點小於右兒子又大於左兒子 也就是

左兒子 < 父節點 < 右兒子。

我們先按照這樣去約束

所以再樹已經不是空樹的時候我們就可以從頭開始判斷

else
小於進左兒子 大於進右兒子

不管進了哪一邊我們無非就兩種情況有節點或者是null

是null我們直接讓新建的節點就放在這就可以了 然後返回對嗎

如果有節點呢?

那我們應該再判斷一遍,還是和之前一樣。

只要一和前面有重複的操作那我們架個迴圈跑就好了 對不對

void insert(tree* tree, int value)//建立樹

else

else

}else

else }}

}return;

}

好了 建立的函式結束了 

然後遍歷二叉樹 一般用中序遍歷

因為用中序遍歷可以從小到大去遍歷如果不懂的可以去查一下

好了來一發完整**

#include #include typedef struct node node;

typedef struct tree;

void insert(tree* tree, int value)//建立樹

else

else

}else

else }}

}return;} 

void inorder(node* node)//樹的中序遍歷} 

int main()

inorder(tree.root);//中序遍歷

getchar(); getchar();

return 0;

}

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

建立二叉樹

今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...

建立二叉樹

二叉樹在結構上不依賴組織鍊錶 指路法通過根節點與目標節點的相對位置進行定位 define bt left 0 define bt right 1 typedef unsigned long long btpos 結點指標域定義 typedef struct tag btressnode btress...