导航:首页 > 源码编译 > 二叉树算法求值

二叉树算法求值

发布时间:2025-08-29 01:43:34

Ⅰ 求二叉树高度的原理、算法是什么,越详细越好,C语言,谢谢

首先分析二叉树的深度(高度)和它的左、右子树深度之间的关系。从二叉树深度的定义可知,二叉树的深度应为其左、右子树深度的最大值加1。由此,需先分别求得左、右子树的深度,算法中“访问结点”的操作为:求得左、右子树深度的最大值,然后加
1

int
Depth
(BiTree
T
){
//
返回二叉树的深度
if
(
!T
)
depthval
=
0;
else
{
depthLeft
=
Depth(
T->lchild
);
depthRight=
Depth(
T->rchild
);
depthval
=
1
+
(depthLeft
>
depthRight
?
depthLeft
:
depthRight);
}
return
depthval;
}

Ⅱ 二叉树最小权路径长度算法

问题描述:给定一棵树T,含有n个叶子节点,并且每个叶子节点都有一个权重值{A1,A2,A3...An}。目标是计算树T的最小权路径长度(WPL)。例如,2021年408这道题。

方法1:具体算法如下。举例说明。

首先构造哈夫曼树。哈夫曼树的构建顺序无需特定规则,但按照某种规律绘制可以更清晰地展示思路。这里我们以左节点作为顺序。

接着,依次累加所有叶子节点的带权路径长度。从构造的哈夫曼树中可以得知所有节点的路径长度,如“16”节点的路径长度为2。因此,WPL=(16+21+30)*2+(10+12)*3=200。

方法2:这里简要证明上述结论。

对于哈夫曼树T1中的两个兄弟叶子节点N1、N2,假设N1、N2的父节点为P1。N1的路径长度为d。删除N1、N2后得到的哈夫曼树为T2。计算得到W(N1)+W(N2)=N1+N2+(N1+N2)*(d-1)。由此得出W(P1)=P1*(d-1)=W(N1)+W(N2)+N1+N2。因此,W(T1)=W(T2)+N1+N2。

按照哈夫曼树构建过程,知道WPL(T1)=N1+N2+N3......+N,即WPL为所有叶子结点权重之和。

方法3:不绘制哈夫曼树直接计算WPL。按照方法2的过程,每次找到最小的两个节点后,直接累加到WPL里,并递归计算WPL。即WPL(T1)=min(n1+n2)+WPL(T2)。

代码实现:

JS实现:

C语言实现:

阅读全文

与二叉树算法求值相关的资料

热点内容
cad命令大全图表下载 浏览:389
程序员去印度工作 浏览:422
苹果app活动怎么导出 浏览:3
pdf转高清图片 浏览:33
人人玩棋牌源码 浏览:345
如何获取美团服务器时间 浏览:342
php简单加密算法 浏览:791
什么是开服务器 浏览:607
cd4017单片机怎么用 浏览:263
鸟哥pdf 浏览:242
忘记加密的密码了怎么办 浏览:558
好友信息提示音在哪个文件夹 浏览:276
怎么让云服务器转发本地端口 浏览:46
python数组剔除元素 浏览:15
推荐一款解压的手机游戏 浏览:47
jsphp时间戳转换日期 浏览:422
明日之后如何删掉账号服务器 浏览:77
syjsks是什么服务器 浏览:606
中控软件加密狗授权后变空白的 浏览:677
androidphp登陆 浏览:194