二叉树

来源:互联网 发布:c语言运行快捷键 编辑:程序博客网 时间:2024/05/01 03:27
  1. 数组实现
    一般用于完全二叉树,实现略。

  2. 链表实现

typedef struct treeNode{    ElementType Data;    treeNode *Left;    treeNode *Right;}TreeNode;
void PreOrderTraversal(TreeNode *BT) //先序遍历,非递归实现利用stack{    if(BT)    {        printf(“%d”, BT->Data);        PreOrderTraversal(BT->Left);        PreOrderTraversal(BT->Right);    }}
void InOrderTraversal(TreeNode *BT)  //中序遍历,非递归实现利用stack{    if( BT )    {        InOrderTraversal( BT->Left );        printf(“%d”, BT->Data);        InOrderTraversal( BT->Right );    }} 
void PostOrderTraversal(BinTree BT)  //后序遍历,非递归实现利用stack{    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);    AddQ(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);    }}
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;} 
原创粉丝点击