假设一棵平衡二叉树的每个结点都表明了平衡因子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;
}
相关推荐
又菜又爱玩的东哥1 小时前
【C语言】四种方法交换两个数(免费复制)
c语言·开发语言
AICodeThunder1 小时前
C++知识点总结(57):STL综合
java·c++·算法
秋凉 づᐇ1 小时前
2024-11-16 串的定义和基本操作
数据结构
薔薇十字1 小时前
【代码随想录day32】【C++复健】509. 斐波那契数;70. 爬楼梯;746. 使用最小花费爬楼梯
开发语言·c++·算法
White graces1 小时前
力扣(LeetCode)283. 移动零(Java)
算法·leetcode
薯条可乐1 小时前
获取当前程序运行时的栈大小[C语言]
c语言·面试
液态不合群1 小时前
Rust字符串类型全解析
网络·算法·rust
最后一个bug1 小时前
lua脚本语言基本原理
linux·c语言·开发语言·单片机·嵌入式硬件
励志成为嵌入式工程师2 小时前
数据结构(单向链表——c语言实现)
c语言·数据结构·链表
阿七想学习2 小时前
数据结构《栈和队列》
java·开发语言·数据结构