计算法统计二叉树中度为1的节点个数

news/2024/10/22 21:23:11

最近学习有关于二叉树类的知识,学习时使用的是C语言。
代码如下:

include <stdio.h>

include <stdlib.h> // 添加这一行,包含 malloc 的声明

typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;

// 创建树节点
TreeNode* createNode(int val) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}

// 计算度为1的节点个数
int countDegreeOneNodes(TreeNode* root) {
if (root == NULL) {
return 0;
}

// 如果节点没有左右子节点,则不是度为1的节点
if (root->left == NULL && root->right == NULL) {return 0;
}// 如果只有一个左子节点或者一个右子节点,则是度为1的节点
if ((root->left != NULL && root->right == NULL) || (root->left == NULL && root->right != NULL)) {return 1 + countDegreeOneNodes(root->left) + countDegreeOneNodes(root->right);
}// 否则,继续递归计算左右子树的度为1的节点个数
return countDegreeOneNodes(root->left) + countDegreeOneNodes(root->right);

}

int main() {
TreeNode *root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);

printf("Number of nodes with degree one: %d\n", countDegreeOneNodes(root));return 0;

}
使用这个就可计算简单二叉树的节点个数。更难的可以使用此类推。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74813.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

[LNOI2014] LCA

[LNOI2014] LCA 乐子笑点解析:单log疯狂卡常才卡过那两双log做法。 全局平衡二叉树解法。 考虑差分,然后挂扫描线。\(dep_{LCA(x,y)}\)实际上就是将\(x\)到根的节点权值加1,然后求\(y\)到根的节点的权值和。 然后就是全局平衡二叉树的板子,标记永久化写就好了。 应该会抽时…

倍增st表

首先,因为士兵是环形的,所以先将其拆分为链,并且每个士兵的移动位子不会被包含,所以只需要对左端点进行排序就能得到一个递增的区间点击查看代码 void init() {cin >> n >> m;int i;for (i = 1; i <= n; ++i){w[i].i1 = i;cin >> w[i].l >> w[i…

前后端实现双Token无感刷新用户认证

前后端实现双Token无感刷新用户认证 本文记录了使用双Token机制实现用户认证的具体步骤,前端使用的Vue,后端使用SpringSecurity和JWT 双Token分别指的是AccessToken和RefreshToken AccessToken:每次请求需要携带AccessToken访问后端数据,有效期短,减少AccessToken泄露带来…

门罗币隐私保护之环签名

主页微信公众号:密码应用技术实战 博客园首页:https://www.cnblogs.com/informatics/ GIT地址:https://github.com/warm3snow简介 在《门罗币隐私保护之隐形地址》文章中,我们重点介绍了门罗币Monero的隐形地址技术,门罗币通过隐形地址保证了交易的不可链接性,并实现了用…

Maven的学习

Maven 安装与配置 今天我们来学习一下Maven,Maven就相当于一个管理的工具,原理就是使用一个插件,这个插件由多个jar包构成。 在一个公司的项目开发过程中,一个大的项目通常被分为好几个小的模块,由不同的人去完成,但是不同的人在开发的过程中,使用的组件,jar包难免会有…

jdk8中文文档及安卓阅读器

例:下载链接: 文档(密码:76nh) 软件(密码:5wrj) 原文链接: http://466dd.com

7-1计算阶乘和【PTA嵌套循环程序设计】

嵌套循环程序设计 7-1计算阶乘和#include<stdio.h>int f(int a){int sum = 1;for(int i=1;i<=a;i++){sum *= i;}return sum;}//构造N!函数int main(){int N = 0,sum = 0;//初始化scanf("%d",&N);if(N>1){for(int i=1;i<=N;i++){sum += f(i);//实…

从认识 Kubernetes 开始

你也说,我也说,那什么是 K8s 呢?Author: ACatSmiling Since: 2024-10-21认识 Kubernetes 什么是 Kubernetes 官方网站:https://kubernetes.io Kubernetes,是 Google 严格保密十几年的秘密武器 Borg 系统的一个开源版本,于 2014 年 9 月发布第一个版本,2015 年 7 月发布第…