求二叉树的带权路径长度

news/2024/10/8 10:04:08 标签: 数据结构, 算法

二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T,采用二叉链表存储。结点结构为:

其中叶结点的weight域保存该结点的非负权值。设root为指向T的根结点的指针,请设计求T的WPL的算法

思想:使用先序遍历递归的方式实现。使用一个变量len,初始值为0,每向下遍历一层,len加1.如果当前结点是叶子结点的话,那么就计算(len-1)*weight,并加入到总权值中。

代码:

typedef struct BiTNode{
	ElemType data;
	struct BiTNode *left,*right;
}BiTNode, *BiTree;

void TWPL(BiTree root,int len,int &wpl){
	if(root == NULL) return;//树空 
	len++;
	
	if(root->left==NULL && root->right==NULL){
		//叶结点 
		wpl += (len-1)*root->weight;
	}else{
		//递归处理左右子树 
		wpl(root->left,len,wpl);
		wpl(root->right,len,wpl);
	}
}
int WPL(BiTree root){
	int wpl=0;
	TWP(root,0,wpl);
	return wpl;
} 


http://www.niftyadmin.cn/n/5693979.html

相关文章

02 - 第二章 开始学习C++

1. 进入C #include <iostream>int main() {/** 这是多行注释* 这是多行注释* 这是多行注释*/using namespace std;cout << "Come up and C me some time."; // 这是单行注释cout << endl;cout << "You wont regret it!" <<…

【sqlmap】sqli-labs速通攻略

sqli-labs工具速通 Less-1 sqlmap -u http://127.0.0.1:8081/Less-1/?id1 --batch --dbs sqlmap -u http://127.0.0.1:8081/Less-1/?id1 --batch -D security --tables sqlmap -u http://127.0.0.1:8081/Less-1/?id1 --batch -D security -T users --columns sqlmap -u ht…

Linux常用应急溯源命令

常用命令 1、账号相关命令 1、查询特权用户特权用户(uid 为0)&#xff1a;awk -F: $30{print $1} etc/passwd 2、查询可以远程登录的帐号信息&#xff1a;awk /\$1|\$6/{print $1} etc/shadow 2、程序相关命令 1、查看当前开放端口netstat -tnlp 2、查看当前系统上运行的所…

【2024最新】基于springboot+vue的家具销售电商平台lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

Spring之生成Bean

Bean的生命周期&#xff1a;实例化->属性填充->初始化->销毁 核心入口方法&#xff1a;finishBeanFactoryInitialization-->preInstantiateSingletons DefaultListableBeanFactory#preInstantiateSingletons用于实例化非懒加载的bean。 1.preInstantiateSinglet…

面向对象特性中 继承详解

目录 概念&#xff1a; 定义&#xff1a; 定义格式 继承关系和访问限定符 基类和派生类对象赋值转换&#xff1a; 继承中的作用域&#xff1a; 派生类的默认成员函数 继承与友元&#xff1a; 继承与静态成员&#xff1a; 复杂的菱形继承及菱形虚拟继承&#xff1a; 虚…

Orecle 迁移 人大金仓数据库 SQL 问题

1. start with ... connect by 语法不兼容 使用 oracle 项目一般使用&#xff0c;start with ... connect by 语法做菜单栏数据查询&#xff0c;该语法在人大金仓数据库提供的可视化工具中可以执行&#xff0c;但在Springboot mybatis 项目中无法执行(版本2.X)&#xff0c;通…

第三课 Vue中的方法的定义及事件绑定指令

Vue中的方法的定义及事件绑定指令 方法定义 方法定义通过Vue对象中的methods属性进行拓展 1&#xff09;基础示例 new Vue({el: #app,methods: {fun(){alert(1);}}})2&#xff09;操作对象数据 new Vue({el: #app,data: {val: Hello World !},methods: {fun(){alert(val);}}…