美文网首页数据结构和算法分享专题
求二叉树的深度、总结点数和叶子结点数

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

作者: 孤独杂货铺 | 来源:发表于2017-11-16 15:05 被阅读208次

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


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;

                      }

}

相关文章

  • 求二叉树的深度、总结点数和叶子结点数

    二叉树的二叉链表的存储结构: typedef char TElemType; typedef struct BiT...

  • 满二叉树 层数k 总结点数2^k-1 层结点数2^(k-1)总结点数=总分支数+1已知树每个度的结点个数,求完全二...

  • Leetcode 104 二叉树的最大深度

    题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点...

  • LeetCode 104. 二叉树的最大深度

    题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点...

  • 104. 二叉树的最大深度

    题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子...

  • Leetcode 104. 二叉树的最大深度

    题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子...

  • 【二叉树】104. 二叉树的最大深度

    题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点...

  • leetcode--104--二叉树的最大深度

    题目:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点...

  • leetcode第104题:二叉树的最大深度

    题目描述 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节...

  • 【Leetcode】104—Maximum Depth of B

    一、题目描述 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子...

网友评论

    本文标题:求二叉树的深度、总结点数和叶子结点数

    本文链接:https://www.haomeiwen.com/subject/dqylvxtx.html