计算树的高度

树的高度就是数的层数。那怎么计算树的高度呢?我们可以分贝将左节点的高度计算出来和右

节点的高度计算出来,在比较大小。大的就是树的高度。

其实不管是求树的高度还是叶子节点个数,都是在遍历整个树,只不过在遍历的过程中满足了某种条件就做出一定的处理,所以树的遍历是最基本的。

typedef struct BiTNode
{
    int data;
    struct BiTNode* lchild, *rchild;
}BiTNode;

int Deepth(BiTNode *root)
{
    int deepthleft = 0;
    int deepthright = 0;
    int deepcount = 0;
    if (root == NULL)
    {
        deepcount = 0;
        return deepcount;
    }
    //求左子树的高度
    deepthleft = Deepth(root->lchild);
    //求右子树的高度
    deepthright = Deepth(root->rchild);

   //每次都要加上根节点的高度

    deepcount = 1+ ((deepthleft > deepthright) ? deepthleft : deepthright);
    return deepcount;
}

void main()
{
    BiTNode t1, t2, t3, t4, t5;
    memset(&t1, 0, sizeof(BiTNode));
    memset(&t2, 0, sizeof(BiTNode));
    memset(&t3, 0, sizeof(BiTNode));
    memset(&t4, 0, sizeof(BiTNode));
    memset(&t5, 0, sizeof(BiTNode));

    t1.data = 1;
    t2.data = 2;
    t3.data = 3;
    t4.data = 4;
    t5.data = 5;

    t1.lchild = &t2;
    t1.rchild = &t3;
    t2.rchild = &t4;
    t3.lchild = &t5;
    int deep=Deepth(&t1);
    printf("deep=%d ", Deepth(&t1));
    system("pause");
}

猜你喜欢

转载自blog.csdn.net/qianyayun19921028/article/details/81152577