计算二叉树的WPL

编程入门 行业动态 更新时间:2024-10-10 08:26:53

计算<a href=https://www.elefans.com/category/jswz/34/1769924.html style=二叉树的WPL"/>

计算二叉树的WPL

  • WPL:Weighted Path Length of Tree,带权路径长度
  • 从树根到某结点经过的边数与该结点权值的乘积,称为该结点的带权路径长度
  • 树中所有叶结点的带权路径长度之和称为该的带权路径长度

算法思想

  • 用一个static变量记录WPL,基于先序遍历算法,找到叶结点并将该叶结点的带权路径长度累加到WPL上。每个结点的深度作为递归函数的一个参数传递
  • 传入的deep初始值为0

算法实现

//结点定义
typedef struct BiTNode{int weight;struct BiTNode* left, * right;
}BiTNode,*BiTree;int preOrderToGetWPL(BiTree T,int deep) {static int WPL = 0;if (T != NULL) {if (T->left == NULL && T->right == NULL) {WPL += (T->weight * deep);}preOrderToGetWPL(T->left, deep + 1);preOrderToGetWPL(T->right, deep + 1);}return WPL;
}//另解:后序遍历(更简洁)
int WPL = 0; //全局变量
int postOrderToGetWPL(BiTree T,int deep) {if(T==NULL) return 0;if (T->left == NULL && T->right == NULL) return WPL += (T->weight * deep);else return postOrderToGetWPL(T->left, deep + 1)+postOrderToGetWPL(T->right, deep + 1);
}

更多推荐

计算二叉树的WPL

本文发布于:2024-02-13 18:28:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1760077.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:二叉树   WPL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!