问答题 二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T,采用二叉链表存储,结点结构为:
问答题 给出算法的基本设计思想;
【正确答案】正确答案:设二叉树根结点的层次为1,在遍历二叉树的函数中增加层次参数,初始值为1。遍历二叉树,在访问结点时若是叶子结点,则求其带权路径长度,将所有叶子结点的带权路径长度相加,即得到二叉树的带权路径长度。 (
【答案解析】
问答题 使用C或C++语言,给出二叉树结点的数据类型定义;
【正确答案】正确答案:ypedef struct node {int weight; //结点的权值,设为整型 struct node*left,*right; //指向结点左、右子女的指针 }BiNode,*BiTree;
【答案解析】
问答题 根据设计思想,采用C或C++语言描述算法,关键之处给出注释。【2014年全国试题41(13分)】
【正确答案】正确答案:int WPL:0; //带权路径长度初值为0,是全局变量 void inorder(BiTree bt,level Iv) //bt是二叉树,1v是结点的层次,初值为1,本算法求二叉树bt的带权路径长度 (if(bt) finorder(bt一>left,iv+1); //中序遍历左子树 if(bt一>left==null&&bt一>right==null) //判断该结点是否为叶子 WPL+=(iv一1)*bt一>weight; //累加结点带权路径长度 inorder(bt一>right,Iv+1); //中序遍历右子树 } }
【答案解析】