假设一棵平衡二叉树的每个结点都表明了平衡因子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;
}
相关推荐
北上ing6 分钟前
算法练习:19.JZ29 顺时针打印矩阵
算法·leetcode·矩阵
.格子衫.1 小时前
真题卷001——算法备赛
算法
XiaoyaoCarter1 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树
Hygge-star2 小时前
【数据结构】二分查找5.12
java·数据结构·程序人生·算法·学习方法
June`3 小时前
专题二:二叉树的深度搜索(二叉树剪枝)
c++·算法·深度优先·剪枝
加什么瓦4 小时前
Redis——底层数据结构
数据结构
小狗祈祷诗4 小时前
day22-数据结构之 栈&&队列
c语言·数据结构
AI+程序员在路上4 小时前
XML介绍及常用c及c++库
xml·c语言·c++
好吃的肘子4 小时前
Elasticsearch架构原理
开发语言·算法·elasticsearch·架构·jenkins
胡耀超5 小时前
霍夫圆变换全面解析(OpenCV)
人工智能·python·opencv·算法·计算机视觉·数据挖掘·数据安全