Bitnode
?和?Bitree
?的區別在于它們的類型定義和用途:
-
Bitnode
:-
這是一個結構體類型,表示二叉樹中的一個節點。
-
它包含三個成員:
-
data
:存儲節點的數據(這里是?char
?類型)。 -
lchild
:指向左子節點的指針(類型為?struct Bitnode*
)。 -
rchild
:指向右子節點的指針(類型為?struct Bitnode*
)。
-
-
使用時需要顯式地寫成?
struct Bitnode
?或?Bitnode
(因為?typedef
?已經為?struct Bitnode
?創建了別名?Bitnode
)。
-
-
Bitree
:-
這是一個指向?
Bitnode
?結構體的指針類型(即?Bitnode*
)。 -
它是通過?
typedef
?定義的別名,等價于?Bitnode*
。 -
代碼中的?
*Bitree
?表示?Bitree
?是一個指針類型,指向?Bitnode
?結構體。 -
這樣定義后,可以直接用?
Bitree
?聲明指向二叉樹節點的指針,而不需要每次都寫?Bitnode*
。
-
為什么?Bitree
?前多了?*
?
在?typedef
?語句中:
typedef struct Bitnode ... Bitnode, *Bitree;
-
Bitnode
?是?struct Bitnode
?的別名。 -
*Bitree
?是?struct Bitnode*
?的別名(即指向?struct Bitnode
?的指針)。
這里的?*
?是 C 語言的語法,表示?Bitree
?是一個指針類型。typedef
?的語法允許在定義類型的同時聲明指針類型別名。
示例用法:
Bitnode node; // 聲明一個二叉樹節點(結構體變量) Bitree tree_ptr; // 聲明一個指向二叉樹節點的指針(等價于 Bitnode* tree_ptr)
總結:
-
Bitnode
?是結構體類型,表示二叉樹的節點。 -
Bitree
?是指向?Bitnode
?的指針類型,通常用于表示二叉樹的根節點或遍歷時的指針。 -
*Bitree
?中的?*
?是?typedef
?語法的一部分,表示?Bitree
?是一個指針類型。