typedef struct TreeNode* BinTree;
typedef BinTree Position;
struct TreeNode {
ElementType Data;
BinTree Left;
BinTree Right;
};
//先序遍历
void PreOrderTraversal(BinTree BT)
{
if (BT) {
printf("%d", BT->Data);
PreOrderTraversal(BT->Left);
PreOrderTraversal(BT->Right);
}
}
//中序遍历
void InOrderTraversal(BinTree BT)
{
if (BT) {
InOrderTraversal(BT->Left);
printf("%d", BT->Data);
InOrderTraversal(BT->Right);
}
}
//后序遍历
void PostOrderTraversal(BinTree BT)
{
if (BT) {
PostOrderTraversal(BT->Left);
PostOrderTraversal(BT->Right);
printf("%d", BT->Data);
}
}
//层序遍历
void LevelOrderTraversal(BinTree BT)
{
Queue Q; BinTree T;
if (!BT) return;
Q = CreatQueue(MaxSize);
AddQQ(Q, BT);
while (!IsEmptyQ(Q))
{
T = DeleteQ(Q);
printf("%d\n", T->Data);
if (T->Left) AddQ(Q, T->Left);
if (T->Right) AddQ(Q, T->Right);
}
}
//遍历叶子节点
void PreOrderPrintLeaves(BinTree BT)
{
if (BT)
{
if (!BT->Left && !BT->Right)
printf("%d", BT->Data);
PreOrderPrintLeaves(BT->Left);
PreOrderPrintLeaves(BT->Right);
}
}
//先序遍历的非递归遍历算法
void InOrderTraversal(BinTree BT)
{
BinTree T;
Stack S = CreatStack(MaxSize);
while (T || !IsEmpty(S))
{
while (T)
{
printf("%d", T->Data);
Push(S, T);
T = T->Left;
}
if (!IsEmpty(S))
{
T = Pop(S);
T = T->Right;
}
}
}
//中序遍历非递归遍历算法
void InOrderTraversal(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("%d", T->Data);
T = T->Right;
}
}
}
//后续遍历的非递归算法
void PostOrderTraversal(BinTree BT)
{
BinTree T = BT;
BinTree LT = NULL;
Stack S = CreateStack(MaxSize);
while (T || !IsEmpty(S))
{
while (T)
{
Push(S, T);
T = T->Left;
}
if (!IsEmpty(S))
{
T = Pop(S);
if ((T->Right == NULL) || (T->Right == LT))
{
printf("%d", T->Data);
LT = T;
T = NULL;
}
else
{
Push(S, T);
T = T->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;
}
}
树的遍历
最新推荐文章于 2024-07-07 18:26:58 发布