tuntun123 提交的代码
提交时间:2024 三月 语言:C++运行时间:0ms占用内存:253K
运行状态: Accepted
题目:二叉树叶结点的个数4777

登录之后查看代码,点此登录账号

                
                    #include <iostream>
using namespace std;

typedef struct node
{
    char data;
    struct node *lchild;
    struct node *rchild;
}BiNode, *BiTree;

int i=0;
// 先序建立二叉树 (输入时,按先序次序输入二叉树中结点的值,以 # 字符表示空树)
BiTree createBiTree(char* arr)
{
    BiTree T;
    if (arr[i] == '#')
	{
		T = NULL;
		i++;
	}
    else
    {
        T = new BiNode;  // 或 T = (BiTree)malloc(sizeof(BiNode));
        T->data = arr[i];
		i++;

        T->lchild = createBiTree(arr);
        T->rchild = createBiTree(arr);
    }

    return T;

}

// 二叉树叶子节点个数(递归方法)
int leaf_num(BiTree T)
{
    if (T == NULL)
        return 0;
    if (T->lchild == NULL && T->rchild == NULL)
        return 1;

    return (leaf_num(T->lchild) + leaf_num(T->rchild));
}


int main() {

	char arr[1000];
	cin>>arr;
    BiTree T = createBiTree(arr); // 建立

    int num = leaf_num(T);
    printf("%d\n", num);

    return 0;
}