#include <stdio.h>
#include <malloc.h>
typedef struct TreeNode *BinTree;
struct TreeNode{
int Data;
BinTree Left;
BinTree Right;
};
BinTree createBinTree();
BinTree FindMin(BinTree BST);
BinTree FindMax(BinTree BST);
BinTree IterFindMin(BinTree BST);
BinTree FindMin(BinTree BST){
if(!BST){
return NULL;
}
else if(!BST->Left){
return BST;
}
else{
return FindMin(BST->Left);
}
}
BinTree IterFindMin(BinTree BST){
while(BST){
if(BST->Left){
BST = BST->Left;
}else{
return BST;
}
}
return NULL;
}
BinTree FindMax(BinTree BST){
if(!BST){
return NULL;
}
else if(!BST->Right){
return BST;
}
else{
return FindMax(BST->Right);
}
}
BinTree createBinTree(){
BinTree treeNode;
int data;
scanf("%d",&data);
if(data){
treeNode = (BinTree)malloc(sizeof(BinTree));
treeNode->Data = data;
treeNode->Left = createBinTree();
treeNode->Right = createBinTree();
}else{
treeNode = NULL;
}
return treeNode;
}
int main () {
BinTree T,TMin,TMax,iterTMin;
T = createBinTree();
TMax = FindMax(T);
printf("最大元素为:%d\n",TMax->Data);
TMin = FindMin(T);
printf("递归查找的最小元素为:%d\n",TMin->Data);
iterTMin = IterFindMin(T);
printf("非递归查找的最小元素为:%d\n",iterTMin->Data);
}