遞迴遍歷二叉樹 C語言

2021-09-05 08:45:58 字數 1236 閱讀 6484

之前寫了關於二叉樹的非遞迴遍歷演算法的**,今天把二叉樹的遞迴遍歷演算法的**補上,內容很簡單!但是今天也算是寫了一會兒**了~姑且這麼認為吧~

**:

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