求二叉树高度

本文介绍了一个使用C++实现的二叉树结构,并通过递归算法计算二叉树的高度。文章提供了一个完整的程序示例,包括创建二叉树、计算高度及释放内存等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
using namespace std;


struct Node {
char data;
Node *lchild;
Node *rchild;
};


void High(Node *T, int &h)
{
if (T == NULL)
h = 0;
else {
int left_h;
High(T->lchild, left_h);
int right_h;
High(T->rchild, right_h);


h = 1 + max(left_h, right_h);
}
}


Node *CreateBiTree(Node *&T) {  // 算法6.4
// 按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,
// 构造二叉链表表示的二叉树T。
char ch;
cin >> ch;
if (ch == '#')
T = NULL;
else {
if (!(T = (Node *)malloc(sizeof(Node))))
return 0;
T->data = ch;              // 生成根结点
CreateBiTree(T->lchild);   // 构造左子树
CreateBiTree(T->rchild);   // 构造右子树
}
return T;
} // CreateBiTree


void Free(Node *&T)
{
if (T == NULL)
return;


Free(T->lchild);
// T->lchild = NULL;
Free(T->rchild);
// T->rchild = NULL;
free(T);
T = NULL;
}


int main(int argc, char **argv)
{
freopen("cin.txt", "r", stdin);


Node *T = NULL;
CreateBiTree(T);


int height;
High(T, height);
cout << height << endl;


Free(T);


return 0;
}


/* cin.txt:
A
B
C
#
#
D
E
#
G
#
#
F
#
#
#

*/


输出结果为5

【本文转至】:http://blog.youkuaiyun.com/justme0/article/details/7694704

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值