初学数据结构之二叉树

来源:互联网 发布:淘宝详情页装修 编辑:程序博客网 时间:2024/06/05 18:30
一:二叉树的链表实现typedef struct TreeNode *BinTree;typedef BinTree Position;struct TreeNode{int Data;BinTree Left;BinTree Right;}二:二叉树的遍历void PreOrderTraveral(BinTree BT)           //前序遍历{if(BT){printf("%d",BT->Data);PreOrderTraveral(BT->Left);PreOrderTraveral(BT->Right);}}void InOrderTraveral(BinTree BT)           //中序遍历{if(BT){InOrderTraveral(BT->Left);printf("%d",BT->Data);InOrderTraveral(BT->Right);}}void PostOrderTraveral(BinTree BT)           //后序遍历{if(BT){PostOrderTraveral(BT->Left);PostOrderTraveral(BT->Right);printf("%d",BT->Data);}}void InOrderTraveral(BinTree BT)           //中序遍历的堆栈实现{BinTree T=BT;Stack S=CreatStack(MaxSize);while(T || !IsEmpty(S)){while(T){Push(S,T);T=T->Left;}if(!IsEmpty(S)){T=Pop(S);printf("%5d",T->Data);T=T->Right;}}}void PreOrderTraveral(BinTree BT) //先序遍历的堆栈实现{BinTree T=BT;Stack S=CreatStack(MaxSize);while(T || !IsEmpty(S)){while(T){Push(S,T);printf("%5d",T->Data);T=T->Left;}if(!IsEmpty(S)){T=Pop(S);T=T->Right;}}}void LevelOrderTraveral(BinTree BT) //层次遍历的队列实现{QueneQ;BinTree T;if(!BT)return;Q=CreatQuene(MaxSize);Add(Q,BT);T=DelectQ(Q);printf("%d\n",T->Data);if(T->Left)AddQ(Q,T->Left);if(T->Right)AddQ(Q,T->Right);}

0 0