zoukankan      html  css  js  c++  java
  • 6-1 二叉树求深度和叶子数 (20 分)

    编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构

    函数接口定义:

    int GetDepthOfBiTree ( BiTree T);
    int LeafCount(BiTree T);
    

      

    其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。

    裁判测试程序样例:

    //头文件包含
    #include<stdlib.h>
    #include<stdio.h>
    #include<malloc.h>
    
    //函数状态码定义
    #define TRUE       1
    #define FALSE      0
    #define OK         1
    #define ERROR      0
    #define OVERFLOW   -1
    #define INFEASIBLE -2
    #define NULL  0
    typedef int Status;
    
    //二叉链表存储结构定义
    typedef int TElemType;
    typedef struct BiTNode{
        TElemType data;
        struct BiTNode  *lchild, *rchild; 
    } BiTNode, *BiTree;
    
    //先序创建二叉树各结点
    Status CreateBiTree(BiTree &T){
       TElemType e;
       scanf("%d",&e);
       if(e==0)T=NULL;
       else{
         T=(BiTree)malloc(sizeof(BiTNode));
         if(!T)exit(OVERFLOW);
         T->data=e;
         CreateBiTree(T->lchild);
         CreateBiTree(T->rchild);
       }
       return OK;  
    }
    
    //下面是需要实现的函数的声明
    int GetDepthOfBiTree ( BiTree T);
    int LeafCount(BiTree T);
    //下面是主函数
    int main()
    {
       BiTree T;
       int depth, numberOfLeaves;
       CreateBiTree(T);
       depth= GetDepthOfBiTree(T);
    	 numberOfLeaves=LeafCount(T);
       printf("%d %d
    ",depth,numberOfLeaves);
    }
    
    /* 请在这里填写答案 */
    

      

    输入样例:

    1 3 0 0 5 7 0 0 0
    

      

    输出样例:

    3 2
    

      

    int GetDepthOfBiTree ( BiTree T)
    {
        if(T == NULL)
            return 0;
        else{
            int lenr = 1 + GetDepthOfBiTree(T->rchild);
            int lenl = 1 + GetDepthOfBiTree(T->lchild);
            if(lenr > lenl)
                return lenr;
            else
                return lenl;
        }
    }
    int LeafCount(BiTree T)
    {
        if( T == NULL)
            return 0;
        else if( T->lchild== NULL || T->rchild == NULL)
            return 1;
        else
            return LeafCount(T->lchild) + LeafCount(T->rchild);
    }
    

      

  • 相关阅读:
    Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(一)
    模块化开发
    最近理解记忆
    ES6语法—— 模块化开发之import和export命令详解
    关于阿里图标库Iconfont生成图标的三种使用方式(fontclass/unicode/symbol)
    2.新知-display:inline-block元素之间空隙的产生原因和解决办法
    规避同源
    vue总结
    vue组件通信
    vue 多次学习
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/10151915.html
Copyright © 2011-2022 走看看