假设一棵平衡二叉树的每个结点都表明了平衡因子b,试设计一个算法,求平衡二叉树的高度。

cs 复制代码
typedef struct Node
{
	int data;
	int bf;//平衡因子
	struct Node* lchild;
	struct Node* rchild;
}Node;

//创建节点
Node* Create(int data, int bf)
{
	Node* newnode = (Node*)malloc(sizeof(Node));
	newnode->data = data;
	newnode->bf = bf;
	newnode->lchild = newnode->rchild = NULL;
	return newnode;
}

int Height(Node* root)
{
	int level = 0;
	Node* T = root;
	while (T)
	{
		level++;//根节点存在++1;
		if (T->bf < 0)
		{
			//<0那就是右边 > 左边
			T = T->rchild;//找更深的分支下去
		}
		else
		{
			T = T->lchild;
		}
	}
	return level;
}
int main()
{
	Node* root = Create(28, 0);
	root->lchild = Create(25, 1);
	root->rchild = Create(31, 0);
	root->lchild->lchild = Create(16, 0);
	root->rchild->lchild = Create(30, 0);
	root->rchild->rchild = Create(47, 0);

	int high = Height(root);
	printf("这棵平衡二叉树的高度为%d", high);
	return 0;
}
相关推荐
拓端研究室TRL9 分钟前
Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集
开发语言·python·算法·决策树·r语言
MessiGo21 分钟前
C/C++ 知识点:静态语言与动态语言
c语言·c++·chrome
小伯宝宝么么1 小时前
关于编译原理——递归下降分析器的设计
java·开发语言·算法
浅安的邂逅2 小时前
Linux Makefile-概述、语句格式、编写规则、多文件编程、Makefile变量分类:自定义变量、预定义变量
linux·c语言·vim·makefile·gcc
橙子奔向大海2 小时前
KD树
数据结构
梭七y2 小时前
【力扣hot100题】(089)最长有效括号
算法·leetcode·职场和发展
柒_汐2 小时前
第十五届蓝桥杯C/C++B组省赛真题讲解(分享去年比赛的一些真实感受)
c语言·c++·蓝桥杯·真题·省赛
珂朵莉MM3 小时前
2025第四届大学生算法挑战赛 赛前测试赛 题解
算法
代码AC不AC3 小时前
【数据结构】二叉树
数据结构·二叉树·学习分享·递归分析·二叉树遍历方法
LabVIEW开发3 小时前
LabVIEW 图像处理中常见的边缘检测算法
图像处理·算法·labview