之前寫了關於二叉樹的非遞迴遍歷演算法的**,今天把二叉樹的遞迴遍歷演算法的**補上,內容很簡單!但是今天也算是寫了一會兒**了~姑且這麼認為吧~
**:
#include
#include
typedef
struct bitnode
bitnode,
*bitree;
//二叉樹節點
//二叉樹先序遍歷
void
prebitree
(bitree t)
printf
("%c "
,t->data)
;prebitree
(t->lchild)
;prebitree
(t->rchild);}
//二叉樹中序遍歷
void
inbitree
(bitree t)
inbitree
(t->lchild)
;printf
("%c "
,t->data)
;inbitree
(t->rchild);}
//二叉樹後序遍歷
void
postbitree
(bitree t)
postbitree
(t->lchild)
;postbitree
(t->rchild)
;printf
("%c "
,t->data);}
//建立二叉樹
void
createbitree
(bitree *t)
else
}int
main()
執行結果:
這次呼叫建立二叉樹的函式採用了對t取位址的方式,而不是之前的直接傳入t引數的方式。createbitree函式的入參的形式也相應的改為bitreet,這是因為呼叫的時候傳入的是t指標的位址,相當於是指標的指標,所以這裡要定義成bitreet。之前的**裡定義的是createbitree(bitree &t),這是c++的寫法,意思是傳的是位址,不是值。兩種寫法的效果一致,但是乙個是c語言寫法,乙個是c++寫法,之前沒有特別關注這個,但是其實風格還是差別挺大的。以後要多注意這類問題,不能再把c語言的語法和c++的語法弄混了!
二叉樹非遞迴遍歷(c語言)
結果如下圖 號代表null,此時沒有節點 一 在c語言中進行二叉樹的非遞迴遍歷需要用到棧,而在c語言中沒有直接呼叫棧的介面,所以在實現非遞迴遍歷時需要先實現乙個棧,需要用到出棧,入棧,棧頂元素,判斷棧是否為空,這四個介面,別的可以不用實現。二 實現棧的介面 注意 這裡棧的陣列需要用到的型別時node...
遞迴遍歷二叉樹
include include include 二叉鍊錶表示法 typedef struct tag bitnode bitnode 先序遍歷 void xianxuorder bitnode root 先根 printf c root data 左子樹 xianxuorder root lchil...
二叉樹遞迴遍歷
編寫簡單的程式對下圖二叉樹進行遍歷 先訪問根節點 printf c root ch 再遍歷左子樹 recursion root lchild 再遍歷右子數 recursion root rchild 再遍歷左子樹 recursion root lchild 先訪問根節點 printf c root ...