假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)。

题目描述:假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树b的宽度(即具有结点数最多的那一层的结点个数)。

分析: 每次递归时,如果当前结点不为空,就将当前层数的宽度+1,并更新最大宽度。然后递归遍历左右子树,将层数加1。 最后最大宽度在全局变量 MAX 里。

c 复制代码
int MAX = -1;		//存放最大宽度
int width[100];	//每层的宽度
void Width(BiTree T,int k){    //k为层数,初始值为 0
	if(T == NULL)
		return;
	width[k]++;
	MAX = MAX < count[k] ? count[k] : MAX;
	Width(T->lchild,k + 1);
	Width(T->rchild,k + 1);
}
相关推荐
Logic10118 分钟前
C语言/数据结构位运算题解:异或XOR找出货船中的“独特载货量“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
彧azz1 小时前
DFS与BFS:图遍历的两大核心算法
数据结构·学习·算法·深度优先·广度优先
青山木2 小时前
Hot 100 --- 最长递增子序列
java·数据结构·算法·leetcode·动态规划
土司大王3 小时前
LeetCode hot100——33.搜索旋转排序数组:Java 二分模板与 O(log n) 实现
数据结构·算法·leetcode
程序员阿鹏3 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
ysu_03145 小时前
08-二叉树遍历:四种方式详解
c语言·数据结构·算法·leetcode
Lyyaoo.5 小时前
【二分查找】【中等】搜索二维矩阵/排序数组的第一位和最后位置/搜索旋转排序数组/旋转排序数组中的最小值
java·数据结构·算法
Lyyaoo.6 小时前
【二分查找】【困难】寻找两个有序数组的中位数
java·数据结构·算法
有点。6 小时前
C++03阶段练习(一)
数据结构·c++
shirsl8 小时前
算法 Day3-队列 / deque + 链表
数据结构·python·算法·链表