PTA 统计二叉树叶子结点个数

6-2 统计二叉树叶子结点个数 (10 分)

本题要求实现一个函数,可统计二叉树的叶子结点个数。

函数接口定义:


int LeafCount ( BiTree T);

T是二叉树树根指针,函数LeafCount返回二叉树中叶子结点个数,若树为空,则返回0。

裁判测试程序样例:


#include <stdio.h>
#include <stdlib.h>

typedef char ElemType;
typedef struct BiTNode
{
	ElemType data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

BiTree Create();/* 细节在此不表 */

int LeafCount ( BiTree T);

int main()
{
	BiTree T = Create();

	printf("%d\n", LeafCount(T));
	return 0;
}
/* 你的代码将被嵌在这里 */

输出样例(对于图中给出的树):

3
int LeafCount ( BiTree T){
    if(T==NULL)
        return 0;
    if(T->lchild==NULL&&T->rchild==NULL){
        return 1;
    }
    else
        return LeafCount(T->lchild)+LeafCount(T->rchild);
}

原文地址:https://www.cnblogs.com/DirWang/p/11929979.html

时间: 2024-10-04 08:48:20

PTA 统计二叉树叶子结点个数的相关文章

PTA 统计二叉树结点个数

6-1 统计二叉树结点个数 (10 分) 本题要求实现一个函数,可统计二叉树的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针,函数NodeCount返回二叉树中结点个数,若树为空,返回0. 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> typedef char ElemType; typedef struct BiTNode { ElemType data; struct Bi

二叉树(二)——遍历、深度统计、叶子结点统计、结点统计

1.二叉树的相关算法的实现(链表). #include <stdio.h> #include <malloc.h> #define NULL 0 typedef struct tree { int data; struct tree *left, *right; }ElemBT; void create_btree(ElemBT *root, int list[], int n) /*n表示list数组中元素的个数*/ { int i; ElemBT *current, *pare

计算二叉树中叶子结点个数的方法

基础知识: 1.二叉树第i层最多有2^(i-1)个结点. 2.深度为k的二叉树至多有2^k-1个结点. 一个完全二叉树有七百个结点,问该二叉树有多少个叶子结点 根据“二叉树的第i层至多有2^(i − 1)个结点:深度为k的二叉树至多有2^k − 1个结点(根结点的深度为1)”这个性质:因为2^9-1 < 700 < 2^10-1 ,所以这个完全二叉树的深度是10,前9层是一个满二叉树,这样的话,前九层的结点就有2^9-1=511个:而第九层的结点数是2^(9-1)=256所以第十层的叶子结点数

计算二叉树叶子结点,加深理解遍历的本质

// operatorTree.cpp // 对树的操作 #include <iostream> #include <cstdio> // 二叉树表示法 typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; // 计算叶子结点个数 int sum1 = 0; void countLeafNum1(BiTNode *T) { if (T == NULL) { ret

【LeetCode】222. Count Complete Tree Nodes-完全二叉树的结点个数

一.描述: 二.思路: 完全二叉树: 对于整棵二叉树,从根结点出发,一直沿左下方向遍历树的深度是l,一直沿右下方向遍历的深度是r:则有两种情况: 1.l == r,左右深度相等,一定是完全二叉树,即满二叉树,结点个数为(2^l-1)或(2^r-1): 2.l != r,只有一种情况:在二叉树的倒数第二层,某个父结点只有左叶子结点而无右叶子结点,及l=r+1.等价的说,将这一个多余的左叶子结点去掉的话,则每棵最小的二叉树(一共3个结点)都是满二叉树,即又回到了上述情况1,最后再加1即为总叶子结点:

六:二叉树中第k层节点个数与二叉树叶子节点个数

二叉树中第k层节点个数 递归解法: (1)如果二叉树为空或者k<1返回0 (2)如果二叉树不为空并且k==1,返回1 (3)如果二叉树不为空且k>1,返回左子树中k-1层的节点个数与右子树k-1层节点个数之和 代码如下: int GetNodeNumKthLevel(BinaryTreeNode *pRoot, int k) { if(pRoot == NULL || k < 1) return 0; if(k == 1) return 1; int numLeft = GetNodeN

PTA 统计二叉树度为2的结点个数

6-4 统计二叉树度为2的结点个数 (11 分) 本题要求实现一个函数,可统计二叉树中度为2的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针,函数NodeCount返回二叉树中度为2的结点个数,若树为空,返回0. 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> typedef char ElemType; typedef struct BiTNode { ElemType dat

PTA 统计二叉树度为1的结点个数

6-3 统计二叉树度为1的结点个数 (10 分) 本题要求实现一个函数,可统计二叉树中度为1的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针,函数NodeCount返回二叉树中度为1的结点个数,若树为空,返回0. 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> typedef char ElemType; typedef struct BiTNode { ElemType dat

二叉树(7)----求二叉树叶子节点个数,递归和非递归

1.二叉树定义: typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTreeNode_t_ *m_pRight; } BTreeNode_t; 2.求二叉树叶子节点数 叶子节点:即没有左右子树的结点 (1)递归方