首页 > 编程语言 >计算法统计二叉树中度为1的节点个数

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

时间:2024-10-22 21:09:25浏览次数:1  
标签:中度 TreeNode right 二叉树 NULL root 节点 left

最近学习有关于二叉树类的知识,学习时使用的是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;

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

标签:中度,TreeNode,right,二叉树,NULL,root,节点,left
From: https://www.cnblogs.com/old-tom/p/18493750

相关文章

  • 统计二叉树中度为1的结点个数
    `classTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intval){this.val=val;this.left=null;this.right=null;}}classBinaryTree{publicstaticintcountNodesWithDegreeOne(TreeNoderoot){if(root==null){return0;......
  • PTA 生成格雷码 | C++ | 二叉树
    格雷码是一种包含2n个数串的序列,这种序列:1不存在重复的元素,2每个元素都是长度为n的二进制数串,3相邻元素只有一位不同。例如,长度为23的格雷码为:000,001,011,010,110,111,101,100。请使用分治法构造格雷码。提示,使用分治法构造格雷码,详见百度百科。输入格式:输入一个正整数n(1<=......
  • MySQL基于gtid同步,新增slave节点
    环境说明:当前MySQL集群为一主一从,新增加Slave节点,将架构变更为一主两从,集群已经运行了很长时间,主节点得binlog早就被purged,启动slave得时候会报错,1236、1062等操作步骤:备份master数据,从节点resetmaster,导入数据1.备份主节点数据:在进行任何操作之前,首先需要对主节点的数据进......
  • 二叉树习题其三-Java【力扣】【算法学习day.10】
    前言书接上篇文章二叉树习题其二,这篇文章我们将基础拓展###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!习题1.从中序与后序遍历序......
  • leetcode:二叉树oj题
    目录1.单值二叉树2.相同的树3.对称二叉树4.二叉树的前序遍历5.二叉树的中序遍历6.二叉树的后序遍历1.单值二叉树https://leetcode.cn/problems/univalued-binary-tree/description/        对于这道题,我们可以进行深度优先查找,当值相同时就继续向下查找......
  • dfs题目:平衡二叉树(java)
    平衡二叉树题目思路开始的error代码(最后一行return的地方有误)修正的代码题目链接:平衡二叉树题目题目思路用分治的思想,要想看看以root为根节点的二叉树是不是平衡二叉树,得看他的左子树和右子树是不是平衡二叉树,如果左子树和右子树都是平衡的,且root自己是平衡的......
  • K个节点翻转链表
    概述起因:leetcode题目25.K个一组翻转链表问题描述给你链表的头节点head,每k个节点一组进行翻转,请你返回修改后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值......
  • Java 代码里如何设置,可以让程序仅仅从 MongoDB 的主节点读写,而不从从节点读写
    在Java中,如果你希望仅从MongoDB的主节点(primarynode)进行读写操作,而避免从从节点(secondarynodes)读写,可以通过以下方式配置MongoDB客户端:1.使用ReadPreference.primary()配置MongoDB提供了ReadPreference类来定义客户端的读偏好。默认情况下,ReadPreference.primary(......
  • Comfyui如何快速选出图像的高光和阴影 _ layerstyle节点
    ✨背景comfyui中,除了AI图像生成本身以外,还会有很多图像处理的工作要做,比如说调整色阶、饱和度,或者还原商品细节。在最近探索的一个场景中,需要将图像中的高光部分提取出来做光源模拟,发现layerstyle这个节点组中包含了这个功能,所以简单分享一下。✨layerMask:ShadowHighlight......
  • 【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Pyt
    ......