• 创建二叉树求叶子节点个数


    求二叉树叶子结点的个数,注意创建方法!

    //求二叉树中叶子结点的个数
    
    #include<iostream>
    #define N 63
    
    using namespace std;
    
    char str[] = "ab#d##c#e##";  //先建立根节点,然后再左右结点建立
    int i = -1;
    
    typedef struct node
    {
        struct node *leftChild;
        struct node *rightChild;
        char data;
    }BiTreeNode, *BiTree;
    
    //生成一个结点
    BiTreeNode *createNode(int i)
    {
        BiTreeNode * q = new BiTreeNode;
        q->leftChild = NULL;
        q->rightChild = NULL;
        q->data = i;
        return q;
    }
    
    BiTree createBiTree1()
    {
        BiTreeNode *p[N] = { NULL };
        int i;
        for (i = 0; i < N; i++)
            p[i] = createNode(i + 1);
    
        // 把结点连接成树
        for (i = 0; i < N / 2; i++)
        {
            p[i]->leftChild = p[i * 2 + 1];
            p[i]->rightChild = p[i * 2 + 2];
        }
    
        return p[0];
    }
    
    void createBiTree2(BiTree &T)
    {
        i++;
        char c;
        if (str[i] && '#' == (c = str[i]))
            T = NULL;
        else
        {
            T = new BiTreeNode;
            T->data = c;
            createBiTree2(T->leftChild);
            createBiTree2(T->rightChild);
        }
    }
    
    int getLeafNode(BiTree T)
    {
        if (NULL == T)
            return 0;
    
        if (NULL == T->leftChild && NULL == T->rightChild)
            return 1;
    
        return getLeafNode(T->leftChild) + getLeafNode(T->rightChild);
    }
    
    int main()
    {
        BiTree T1;
        T1 = createBiTree1();
        cout << getLeafNode(T1) << endl;
    
        BiTree T2;
        createBiTree2(T2);
        cout << getLeafNode(T2) << endl;
    
        return 0;
    }
  • 相关阅读:
    鱼眼相机畸变矫正资料
    异常值检测算法三:3sigma模型
    五:瑞芯微RV1109
    四:海思Hi3516CV500/Hi3516DV300
    三:瑞芯微OK3399-C开发板
    二:飞凌嵌入式FCU1201
    一:芯片概述
    六:大数据架构
    五:大数据架构回顾-LambdaPlus架构
    四:大数据架构回顾-IOTA架构
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5691114.html
Copyright © 2020-2023  润新知