第十周项目3-用二叉树遍历思想解决问题(1)&(2)

问题及代码:

(1)计算二叉树节点个数

#include <stdio.h>
#include<malloc.h>
#include"btree.h"
int Nodes(BTNode *b)
{
    if(b==NULL)
    return 0;
    else
        return Nodes(b->lchild)+Nodes(b->rchild)+1;
}
int main()
{
    BTNode *b;
    CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
    printf("二叉树中所有的叶子节点是: ");
    DispLeaf(b);
    printf("\n");
    DestroyBTNode(b);
    return 0;
}


(2)输出所有叶子节点

void DispLeaf(BTNode *b)
{
    if(b!=NULL)
    {
        if(b->lchild==NULL&&b->rchild==NULL)
            printf("%c",b->data);
        else
            DispLeaf(b->lchild);
            DispLeaf(b->rchild);
    }

}
int main()
{
    BTNode *b;
    CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
    printf("二叉树节点个数: %d\n", Nodes(b));
    DestroyBTNode(b);
    return 0;
}


 

运行结果:

(1)

(2)

知识点总结:

利用二叉树算法库解决实际问题,两个函数中均用到递归调用,知识点比较简单。

心得体会:

在敲代码中慢慢的开始理解了递归的意思,课后多实践才能加深理解!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值