#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...