首页 > 其他分享 >TZOJ数据结构实验:二叉树的层次构造、前中后序遍历、高度depth、叶子节点数leafs、交换左右子节点swap

TZOJ数据结构实验:二叉树的层次构造、前中后序遍历、高度depth、叶子节点数leafs、交换左右子节点swap

时间:2023-02-20 15:13:09浏览次数:48  
标签:rt right return 前中 Bitnode 二叉树 节点 left

5420数据结构实验--二叉树中序遍历(二叉链表存储)

void inorder(Bitnode *t) //中序 
{
    if(t->left)inorder(t->left);
    cout<<" "<<t->val;
    if(t->right)inorder(t->right);
}

 

5421数据结构实验--后序遍历二叉树(二叉链表存储)

void postorder(Bitnode *t) //后序 
{
    if(t->left)postorder(t->left);
    if(t->right)postorder(t->right);
    cout<<" "<<t->val;
}

 

5422数据结构实验--先序遍历二叉树(二叉链表存储)

void preorder(Bitnode *t) //先序 
{
    cout<<" "<<t->val;
    if(t->left)preorder(t->left);
    if(t->right)preorder(t->right);
    
}

 

5423数据结构实验—求二叉树高度(二叉链表存储)

int depth(Bitnode *t) //计算二叉树高度 
{
    if(!t)return 0;
    if(t->val==0)return 0;
    int ls = depth(t->left);
    int rs = depth(t->right);
    return ls>rs?(ls+1):(rs+1);
}

 

5424数据结构实验—求二叉树叶子结点数(二叉链表存储)

int leafs(Bitnode *t) //计算叶子数 
{
    if(!t)return 0;
    if(!t->left && !t->right)return 1;
    return leafs(t->left)+leafs(t->right);
}

 

5425数据结构实验—交换二叉树结点的左右孩子(二叉链表存储)

void leveltraversing(Bitnode *t) //层次遍历 ,队列实现 
{
    if(!t)return;
    Bitnode *rt,*q[1001];
    int tail = 1,head = 1;
    q[tail++] = t;
    while(head<tail)
    {
        rt = q[head];
        cout<<" "<<rt->val;
        if(rt->left)q[tail++] = rt->left;
        if(rt->right)q[tail++] = rt->right;
        head++; 
    }
}
struct Bitnode* child_swap(Bitnode *t) //交换左右子节点 
{
    if(!t)return 0;
    if(t->left)
    t->left = child_swap(t->left); //寻找最深处左节点 
    if(t->right)
    t->right = child_swap(t->right);//寻找最深处右节点 
    Bitnode *rt; //交换 
    rt = t->left;
    t->left = t->right;
    t->right = rt;
}

 

标签:rt,right,return,前中,Bitnode,二叉树,节点,left
From: https://www.cnblogs.com/jyssh/p/17137490.html

相关文章