【例】遍歷二叉樹的應用:輸出二叉樹中的葉子結點。

typedef struct TreeNode *BinTree;typedef BinTree Position; struct TreeNode{ElementType Data;BinTree Left;BinTree Right; }; BinTree BT;
void PReOrderPrintLeaves(BinTree BT)//例如先序遍歷來判斷左右子樹是否都為空 {if(BT){if(!BT->Left&&!BT->Right)//增加檢測結點 printf("%d",BT->Data);PreOrderPrintLeaves(BT->Left);PreOrderPrintLeaves(BT->Right);}}
【例】求二叉樹的高度。

int PostOrderGetHeight(BinTree BT) { int HL;HR,MaxH;if(BT){HL=PostOrderGetHeight(BT->Left);//求左子樹的深度HR=PostOrderGetHeight(BT->Right);//求右子樹的深度 MaxH=(HL>HR)?HL:HR;//取左右子樹較大的深度return (MaxH+1);//返回樹的深度 } else return 0;//空樹深度為0 }
【例】二元運算表達式樹及其遍歷

【例】由兩種遍歷序列確定二叉樹




新聞熱點
疑難解答