数据结构计算二叉树的深度和节点个数

这篇具有很好参考价值的文章主要介绍了数据结构计算二叉树的深度和节点个数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2022.11.19


任务描述

本关任务:给定一棵二叉树,计算该二叉树的深度、总节点个数和叶子节点个数。

相关知识

为了完成本关任务,你需要掌握:1.二叉树深度概念,2.二叉树节点,3.二叉树叶子节点概念。
数据结构计算二叉树的深度和节点个数
二叉树深度概念
二叉树的深度指的是二叉树中最大的结点层数。例如:图1所示的二叉树最大的节点层数为3,所以该二叉树深度为3。

二叉树节点
二叉树的节点包含一个数据元素及两个指向子树的分支,例如:图1所示的二叉树的总节点个数为6。

二叉树叶子节点概念
叶子节点是度为0的节点,二叉树节点的度为子树的个数。例如:图1所示的二叉树叶子节点为C,D和F,个数为3。

编程要求

本关的编程任务是补全右侧代码片段GetTreeDepth、GetNodeNumber和GetLeafNodeNumber中Begin至End中间的代码,具体要求如下:

  1. 在GetTreeDepth中计算该二叉树的深度,返回深度值。
  2. 在GetNodeNumber中计算该二叉树的总的节点个数,返回节点个数。
  3. 在GetLeafNodeNumber中计算该二叉树的叶子节点个数,返回叶子节点个数。

测试说明

平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是平台的测试样例:

测试输入:ABC##D##EF###
预期输出
3
6
3

测试输入:ABCD###E#F##G##
预期输出
4
7
3

开始你的任务吧,祝你成功!文章来源地址https://www.toymoban.com/news/detail-439311.html

C/C++代码

//
//  binary_tree.cpp


#include "binary_tree.h"

//创建新结点的工具函数
BTNode* getNewNode(char e)
{
    BTNode* p = (BTNode*)malloc(sizeof(BTNode));
    p->data = e;
    p->lchild = p->rchild = NULL;
    return p;
}

// 计算该二叉树的深度
// 参数:二叉树根节点root
// 返回:二叉树的深度
int GetTreeDepth(BTNode* root)
{
    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
    if(!root)return 0;
    if(!root->lchild && !root->rchild)return 1;
    int deep=0;
	int deepl = GetTreeDepth(root->lchild);
    if(deep<deepl)deep=deepl;
	int deepr = GetTreeDepth(root->rchild);
    if(deep<deepr)deep=deepr;
	return deep+1;
    /********** End **********/
}

// 计算该二叉树的总节点个数
// 参数:二叉树根节点root
// 返回:二叉树的总节点个数
int GetNodeNumber(BTNode* root)
{
    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
    if (root == NULL)
        return 0;
    else
        return GetNodeNumber(root->lchild) + GetNodeNumber(root->rchild) +1;
    /********** End **********/
}

// 计算该二叉树的叶子节点个数
// 参数:二叉树根节点root
// 返回:二叉树的叶子节点个数
int GetLeafNodeNumber(BTNode* root)
{
    // 请在这里补充代码,完成本关任务
    /********** Begin *********/
    if(!root)return 0;
    if(!root->lchild && !root->rchild) return 1;
    int leaf = GetLeafNodeNumber(root->lchild);
    leaf += GetLeafNodeNumber(root->rchild);
    return leaf;
    /********** End **********/
}


到了这里,关于数据结构计算二叉树的深度和节点个数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包