【自考】数据结构导论-第4章二叉树代码

目录

二叉树先,中,后序遍历【1710真题】

计算二叉树的高度 P106  【1704真题】

以二叉链表作存储的结构,试编写求二叉树叶子结点个数的算法:P225   【1904真题】【1810真题】【1404真题】

设计算法求二叉树的结点的个数

设计算法按先序次序打印二叉树T中叶子结点的值

树的存储结构采用孩子兄弟链表,请编写树的按层次遍历算法


二叉树先,中,后序遍历【1710真题】

void preorder (BinTree bt)
{
    if(bt!=NULL){
        visit(bt);             //访问根结点bt
        preorder(bt->lchild);  //先序遍历左子树
        preorder(bt->rchild);  //先序遍历右子树
    }
}
void inorder (BinTree bt)
{
    if(bt!=NULL){
        inorder(bt->lchild);  //中序遍历左子树
        visit(bt);             //访问根结点bt
        inorder(bt->rchild);  //中序遍历右子树
    }
}
void postorder (BinTree bt)
{
    if(bt!=NULL){
       postorder(bt->lchild);  //后序遍历左子树
       postorder(bt->rchild);  //后序遍历右子树
       visit(bt);             //访问根结点bt
    }
}

计算二叉树的高度 P106  【1704真题】

int Height(BinTree bt){
    int lh,rh;
    if(bt==NULL) return 0;
    else
    {
       lh=Height(bt->lchild);
       rh=Height(bt->rchild);
       return 1+(lh>rh?lh:rh);
    }
}

以二叉链表作存储的结构,试编写求二叉树叶子结点个数的算法:P225   【1904真题】【1810真题】【1404真题】

typedef struct btnode{
    DataType data;
    struct  btnode *lchild,*rchild;
}*BinTree;

int leafnode_num(BinTree bt){
    if(bt==NULL) return 0;
    else{
    if((bt->lchild==NULL)&&(bt->rchild==NULL)) return 1;
    else  return leafnode_num(bt->lchild)+leafnode_num(bt->rchild);
 }
}

设计算法求二叉树的结点的个数

typedef struct btnode{
    DataType data;
    struct  btnode *lchild,*rchild;
}*BinTree;

int node_num(BinTree bt){
    if(bt==NULL) return 0;
    else{
     return node_num(bt->lchild)+node_num(bt->rchild)+1;
}
}

设计算法按先序次序打印二叉树T中叶子结点的值

typedef struct btnode{
    int data;
    struct  btnode *lchild,*rchild;
}*BinTree;

int preorder(BinTree bt){
    if(bt!=NULL){
    if((bt->lchild==NULL)&&(bt->rchild==NULL))
    {
       printf("%d",bt->data);
       preorder(bt->lchild);
       preorder(bt->rchild);
    }
  }
}

树的存储结构采用孩子兄弟链表,请编写树的按层次遍历算法

【自考】数据结构导论-第4章二叉树代码

 

 

 

上一篇:二叉树的三种建立以及三种遍历递归与非递归


下一篇:线索二叉树相关问题