二叉樹建立和遍歷

2021-07-07 09:46:29 字數 2137 閱讀 4608

#include 

#include

// 帶返回值建立二叉樹 最簡單方法

//節點資料結構

struct bs_node

;typedef struct bs_node tree;

// tree *head,*p,*root;

//建立二元查詢樹 有返回值的可以不傳參 沒有的話如何傳參

//輸入0代表到了某個葉子節點

tree *creat()

return p;

}//先序遍歷

int preorder(tree *p)

return0;}

// zhongxubianli

int midorder(tree *p)

return0;}

// houxubianli

int postorder(tree *p)

return0;}

// main hanshu

int main(int argc, char const *argv)

上面是帶返回值的建立函式,比較容易理解。建立和遍歷都是採用遞迴的方法。

#include 

#include

// 帶引數建立二叉樹 二層指標

//節點資料結構

struct bs_node

;typedef

struct bs_node tree;

//帶引數的因為考慮到引數為*p的話需要改變p,這是不可以的 所以用二層指標 或者用指標的引用他們的在函式體內形式不一樣 以及如何呼叫

void creat(tree **p)

else

}int init(tree **p)

void preoder(tree *p)

else

return;

}int main(int argc, char

const *argv)

上面採用的二層指標傳參

#include 

#include

//指標的引用帶引數建立二叉樹c檔案

//節點資料結構

struct bs_node

;typedef

struct bs_node tree;

//reference of a poiter as 呼叫方法及裡面p型別需要注意

int creat(tree *&p)

else

return0;}

int preoder(tree *p)

return0;}

// 測試指標引用的例子

int test(tree *&p)

int main(int argc, char

const *argv)

引數為指標的引用總結。

我的個人總結:對於乙個指標我們應該知道幾個性質,1指標變數,2指標變數的位址,3指標變數指向的記憶體區域。指標變數本身的記憶體區域一般為4個位元組(與編譯器有關,與它指向的記憶體區域大小無關,就算指向的是乙個特別大的資料結構,它也只是乙個數字,這個數字是特別大的資料結構的位址。它存了乙個數字,存到那裡了呢?這個地方就是它的位址)。int *p;則p是指標變數,&p是它的位址,*p是它指向的東西。

二叉樹程式總結

主要在於指標傳參問題

1.一層指標傳參create(tree*p),可以修改*p,但堅決不允許改p,例如p=nul,或者給p分配記憶體,這在函式體內部都是不對的,不適合建立二叉樹,也可能有奇怪的方法我不知道。。(使用帶返回值的可以解決一些問題,例如不傳參在函式體內置立乙個指標,對指標操作後返回指標,呼叫時候賦值給乙個已經宣告的指標變數即可),

2.引數為二層指標int create (tree **p),可以修改*p(乙個指標),**p(乙個結構體),不可以修改p,呼叫時候為了避免建立二層指標顯得比較奇怪,用tree *p;create(&p)就可以。

3.引數為指標的引用int create(tree *&p);p是乙個單層指標(函式引數是乙個指標p,但是傳遞的是p的位址),可以修改p,可以和1對比。呼叫 tree *p;create(p);

注:引用傳參需要用g++編譯,gcc不支援引用傳參

二叉樹建立和遍歷

二叉樹建立遍歷規則 1.先序 根 左 右 2.中序 左 根 右 3.後序 左 右 根 二叉樹定義和輔助函式如下 struct node void visit int data int indata 先序建立二叉樹 struct node createbitree 先序建立乙個二叉樹 return t...

二叉樹建立和遍歷

二叉樹建立遍歷規則 1.先序 根 左 右 2.中序 左 根 右 3.後序 左 右 根 二叉樹定義和輔助函式例如以下 struct node void visit int data int indata 先序建立二叉樹 struct node createbitree 先序建立乙個二叉樹 return...

二叉樹的建立和遍歷

include include define max len 50 define elemtype char define status int define ok 1 define error 0 define overflow 1 typedef struct nodebitreenode,bi...