二叉树求叶子节点

以这个图展示叶子节点的求取
二叉树求叶子节点_第1张图片项目结构
二叉树求叶子节点_第2张图片
项目代码截图:使用递归的方式求取二叉树的叶子节点(递归指的是函数自己调用自己的过程)
二叉树求叶子节点_第3张图片具体代码展示

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 

// 二叉树的节点
typedef struct BINARYNODE {
    // 数据
    char ch;
    // 二叉树的左节点
    struct BINARYNODE* lchild;
    // 二叉树的右节点
    struct BINARYNODE* rchild;
}BinaryNode;
// 使用递归的方式求叶子节点数目

void CalculateLeafNum(BinaryNode* root,int* leafNum) {
    // 使用递归的方式求取每一个节点:所谓的递归指的就是函数自己调用自己的过程
    if (root == NULL) {
        return;
    }
    if (root->lchild == NULL && root->rchild == NULL) {
        (*leafNum)++;
    }

    // 左子树叶子节点的数目
    CalculateLeafNum(root->lchild, leafNum);
    // 右子树叶子节点的数目
    CalculateLeafNum(root->rchild, leafNum);



}



void CresteBinaryTree() {
    // 将节点创建出来
    BinaryNode node1 = { 'A',NULL,NULL};
    BinaryNode node2 = { 'B',NULL,NULL };
    BinaryNode node3 = { 'C',NULL,NULL };
    BinaryNode node4 = { 'D',NULL,NULL };
    BinaryNode node5 = { 'E',NULL,NULL };
    BinaryNode node6 = { 'F',NULL,NULL };
    BinaryNode node7 = { 'G',NULL,NULL };
    BinaryNode node8 = { 'H',NULL,NULL };
    // 建立节点之间的关系
    node1.lchild = &node2;
    node1.rchild = &node6;
    node2.rchild = &node3;
    node3.lchild = &node4;
    node3.rchild = &node5;
    node6.rchild = &node7;
    node7.lchild = &node8;

    int leafNum = 0;
    CalculateLeafNum(&node1, &leafNum);
    printf("叶子节点的数目:%d\n", leafNum);

}

int main()
{
    CresteBinaryTree();


    system("pause");
    return 0;

}

运行结果展示:求得该二叉树的叶子节点数为3
二叉树求叶子节点_第4张图片

你可能感兴趣的:(c语言,开发语言,visual,code,数据结构,二叉树,二叉树叶子节点)