二叉树的先序建立与遍历

结构体的定义

typedef struct bitnode              //定义二叉树节点数据类型 
{
    ElementType data;
    struct bitnode *left, *right;
} bitnode, *bitree;           

函数

先序创建二叉树

void PerCreateTree(bitree &T) 
{ 
    ElementType item;
    cin >> item;
    if( item == 0 )              //叶节点数据标志:其后根两个0 
        T = NULL;            //若某一节点为叶子结点,则其左右子树均为NULL,0表示建空树
    else
    {
        T = new bitnode;
        T->data = item;
        
    PerCreateTree(T->left);            
    PerCreateTree(T->right);            
    }                         
}


先序遍历二叉树

void PerOrder(bitree T) 
{
    if( T )            // T != NULL 
    {
        cout << T->data << " ";
        PerOrder(T->left);            
        PerOrder(T->right);           /
    }
} 


中序遍历二叉树

void InOrder(bitree T) //
{
    if(T)
    {
        InOrder(T->left);
        cout<<T->data<<" "; 
        InOrder(T->right);
    }
}

后序遍历二叉树

void PostOrder(bitree T) 
{
    if(T)
    {
        PostOrder(T->left);
        PostOrder(T->right);
        cout<<T->data<<" ";
    }
}

借用大佬的二叉树示意图
如上图所示,想输入这样一棵二叉树,应先输入根结点,再输入左结点,最后输入右结点:1 2 4 0 0 5 0 0 3 0 0

猜你喜欢

转载自www.cnblogs.com/seerking/p/10780407.html