打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
求二叉树的深度、总结点数和叶子结点数

二叉树的二叉链表的存储结构:


typedef   char   TElemType;

typedef   struct    BiTNode

{

             TElemType data;//数据元素

             BiTNode  *  lchild;//指向左孩子

              BiTNode  *  rchild;//指向右孩子

}BiTNode,* BiTree;



一、二叉树的深度

如果二叉树为空,结点的深度为0;

如果二叉树只有一个结点G为例,其中,它的左右子树的深度为0;而这种情况二叉树的深度为1。

如果二叉树有两个结点D,G为例,其中,以D为根结点的二叉树的左子树的深度为0,右子树的深度为(0+1);而这种情况二叉树的深度为2。

…………

如果二叉树有n个结点,二叉树的深度为二叉树左右子树深度的最大值+1。

代码:

int Depth(BiTree T)

{

                     int m,n;

                     if(!T)                                                   return 0;

                     if(!T->lchild && !T->rchild)           return 1;

                     else

                     {

                                    m = Depth(T->lchild);

                                    n = Depth(T->rchild);

                                     return 1+(m>n?m:n);

                        }

}


二、二叉树的叶子结点数

如果二叉树为空,二叉树的叶子结点数为0;

如果二叉树只有一个结点G(左右子树为空)为例,而这种情况二叉树的叶子结点数为1。

如果二叉树有两个结点D(右子树为非空),G(左右子树为空)为例,其中,以D为根结点的二叉树的左子树的叶子结点数为0,右子树的叶子结点数为1;而这种情况二叉树的叶子结点数为1。

…………

如果二叉树有n个结点,二叉树的叶子结点数为二叉树左右子树叶子结点数的和。

代码:

int CountLeaf(BiTree T)

{

                             int m,n;

                             if(!T)                                                             return 0;

                              if(!T->lchild && !T->rchild)                   return 1;

                              else

                             {

                                            m = CountLeaf(T->lchild);

                                             n = CountLeaf(T->rchild);

                                             return m+n;

                                }

}


三、二叉树的结点数

如果二叉树为空,二叉树的结点数为0;

如果二叉树只有一个结点G(左右子树为空)为例,而这种情况二叉树的结点数为1。

如果二叉树有两个结点D(右子树为非空),G(左右子树为空)为例,其中,以D为根结点的二叉树的左子树的结点数为0,右子树的结点数为1;而这种情况二叉树的结点数为2。

…………

如果二叉树有n个结点,二叉树的结点数为二叉树左右子树结点数的和+1(根结点)。

代码:

int Count(BiTree T)

{

                       int m,n;

                       if(!T)                                                      return 0;

                        if(!T->lchild && !T->rchild)            return 1;

                        else

                       {

                                    m = Count(T->lchild);

                                    n = Count(T->rchild);

                                    return m+n+1;

                      }

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
二叉树
C++二叉树的建立与遍历
二叉树链表C++实现(转)
实验三____二叉树的基本操作实现及其应用
转:二叉树
带你一文看懂二叉树的先(中、后)序遍历以及层次遍历(图解+递归/非递归代码实现)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服