2014年408专业算法题

2023-05-16

文章目录

  • 0 结果
  • 1 题目
  • 2 思路
  • 附录

0 结果

请添加图片描述

1 题目

请添加图片描述

2 思路

二叉树的带权路径长度(WPL)的计算方法有两种:

  • 1,定义: W P L = 所有叶结点的权值 W i ∗ 该结点深度 D i 求和 WPL=所有叶结点的权值W_i*该结点深度D_i求和 WPL=所有叶结点的权值Wi该结点深度Di求和
  • 2,在哈夫曼树中, W P L = 所有非叶结点的权值和 WPL=所有非叶结点的权值和 WPL=所有非叶结点的权值和

本题只能使用方法1,代码如下所示:

#include <cstdio>
#include <cstdlib>
#include <vector>
using std::vector;

typedef struct BTNode{
    int weight;
    struct  BTNode *left, *right;
}BTNode;

int WPL = 0;

//前序遍历
void preOrder(BTNode* p, int d){//d:深度
    if(p == nullptr) return;
    if(p->left == nullptr && p->right == nullptr)//叶结点
        WPL += d*p->weight;
    preOrder(p->left, d + 1);
    preOrder(p->right, d + 1);
}

void ans(BTNode* root){
    preOrder(root, 0);
}

//中序序列
int in[] = {45, 100, 12, 25, 13, 55, 5, 14, 9, 30, 16};
//根据中序和层序创建二叉树
BTNode* Create4(vector<int> layer, int inL, int inR){
    if(layer.size() == 0){//当前层序遍历完
        return NULL;
    }

    BTNode* root = new BTNode;
    root->weight = layer[0];

    int k;
    for (k = inL; k <= inR; ++k) {//中序序列中寻找根结点
        if(in[k] == root->weight){
            break;
        }
    }

    vector<int> leftLayer;//左子树层次遍历
    vector<int> rightLayer;//右子树层次遍历

    for (int i = 1; i < layer.size(); ++i) {//遍历层序序列,分左右子树存储
        bool isLeft = false;
        for (int j = inL; j < k; ++j) {
            if(layer[i] == in[j]){
                isLeft = true;
                break;
            }
        }
        if(isLeft == true){
            leftLayer.push_back(layer[i]);
        }else{
            rightLayer.push_back(layer[i]);
        }
    }

    root->left = Create4(leftLayer,inL, k - 1);
    root->right = Create4(rightLayer,k + 1, inR);

    return root;
}

int main(){
    vector<int> layer;//中序序列
    layer.push_back(100);
    layer.push_back(45);
    layer.push_back(55);
    layer.push_back(25);
    layer.push_back(30);
    layer.push_back(12);
    layer.push_back(13);
    layer.push_back(14);
    layer.push_back(16);
    layer.push_back(5);
    layer.push_back(9);

    BTNode * root  = Create4(layer,  0, sizeof(in)/sizeof(in[0]));
    ans(root);
    printf("%d", WPL);

    return 0;
}


例子中的二叉树如下图所示:
请添加图片描述

附录

408历年真题算法题解析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2014年408专业算法题 的相关文章

  • 百度2014校园招聘笔试题武汉站三道算法设计题

    百度2014校园招聘笔试题武汉站三道算法设计题 1 给定任意一个整整数 求比这个数大且最小的不重复数 就是相邻两位不同 xff0c 例如1231 如1101就是重复数 解 xff1a 思路 xff1a 每次将给定的值加上1 xff0c 然后
  • 百度2014校招笔试题(一)

    算法和程序设计题 xff1a 1 题意 xff1a 一幢大楼的底层有1001根电线 xff0c 这些电线一直延伸到大楼楼顶 xff0c 你需要确定底层的1001个线头和楼顶的1001次线头的对应关系 你有一个电池 xff0c 一个灯泡 xf
  • 百度2014校园招聘研发工程师笔试题+答案

    一 xff0c 简答题 30分 1 xff0c 当前计算机系统一般会采用层次结构存储数据 xff0c 请介绍下典型计算机存储系统一般分为哪几个层次 xff0c 为什么采用分层存储数据能有效提高程序的执行效率 xff1f 10分 xff08
  • 2014.10.12

    早晨8点就起了 xff0c 然后匆匆奔向wx xff0c 为了思念的人 xff0c 吃了个中午饭 xff0c 感觉还不错 xff0c 下午回来之后又去了wpj xff0c 胡扯一通 xff0c 而且发现现在家里人的注意力完全放在我的情感生活
  • 2014——我们都任性过

    任性的岁月中 xff0c 所处在的每一个角落都可能像个自由的天堂 xff0c 我们每天都充满着任性的笑脸 xff0c 像脱了靶的子弹 xff0c 一任性似乎收不回来 xff01 似乎不变的是 xff0c 时间还是那种脚步声 xff0c 速度
  • 我的2014

    我是一个双鱼座的女孩 xff0c 我很喜欢幻想 没事时总是会喜欢去想象自己的未来或者近期生活的样子 进入大学后 xff0c 我发现很多东西很多事都不是想象中的那么美好 大学生活不似想象中的那么简单轻松 xff0c 想要学好自己的专业 xff
  • 微软2014校园招聘笔试题

  • 2014年24段魔尺变三叶花视频教程

    2014年24段魔尺变三叶花视频教程 xff08 升级版 xff09 偶是真心喜欢24段魔尺制作的三叶花 xff0c 那是相当漂亮 xff0c 体现了几何美 xff0c 对称美 xff0c 空间美 xff0c 色彩美 xff0c 见下图 三
  • 百度2014校园招聘研发工程师笔试题+答案

    一 xff0c 简答题 30分 1 xff0c 当前计算机系统一般会采用层次结构存储数据 xff0c 请介绍下典型计算机存储系统一般分为哪几个层次 xff0c 为什么采用分层存储数据能有效提高程序的执行效率 xff1f 10分 xff08
  • 转身不带走一丝云彩--我的2014

    时间或许就是这样不管你愿意不愿意都会毫不犹疑的向前 xff0c 逼你成长 2014年得到了很多也失去了很多 xff0c 我对未来还是有诸多憧憬的 谨以此文献给过去的时光 xff0c 也希望对后来人能有所帮助 改变篇 相比于2013年 xff
  • 阿里巴巴2014校招笔试题-2013年9月14日

    不得不吐槽 xff0c 阿里真是太混乱了 xff0c 北京的笔试在考场等了两个半小时 xff0c 考卷都没运到考场 xff0c 64 阿里巴巴集团校园招聘 回应说 xff1a 北京的同学们 xff0c 简单解释下 xff0c 为了试卷的保密
  • 计算机保研面试常见问题(408操作系统简答题)

    1 操作系统的特点和功能是什么 xff1f 答 xff1a 操作系统的特点是并发 共享 虚拟 异步 其中 xff0c 并发和共享是操作系统主要的特点 操作系统的功能主要包括 xff1a 处理机管理 存储器管理 设备管理和文件管理等 操作系统
  • SQL Server 2014无法连接到服务器之解决方法

    问题如图所示 xff1a 解决方法 1 打开SQL server 配置管理器 gt SQL server 网络配置 gt MSSQLSERVER的协 xff0c 将SQLEXPRESS协议中的Named Pipes改为已启用 xff1a 2
  • 爱线段树的好孩子[POI2014]KAR-Cards

    There are nn cards arranged on a table in a certain order Two integers are written on each card one per side the obverse
  • 计组——大端方式和小端方式以及边界对齐相关题目

    大端方式和小端方式相关题目 1 大端方式和小端方式 2 边界对齐 3 真题嗅探 1 大端方式和小端方式 大端方式 现代人正常的阅读顺序 从左向右 小端方式 古代人的阅读顺序 联想一下对联横批或牌匾 从右至左 虽然小端方式是从右至左 但不是完
  • 计组——彻底搞懂cache主存映射以及cache容量的计算

    cache主存映射以及cache容量 一 三种映射方式 1 全相联映射 2 直接映射 3 组相联映射 二 cache容量计算 1 先计算cache行标记项位数 2 再计算cache块位数 3 计算cache行的位数 4 最后计算cache总
  • 计算机网络知识汇总(超详细)

    目录 第一章 概念 组成 功能 和 分类 计算机网络概念 计算机网络功能 计算机网络的组成 计算机网络的分类 总结 标准化工作及相关组织 标准化工作 标准化工作相关组织 总结 计算机网路的速率 带宽 吞吐量 1 速率 2 带宽 3 吞吐量
  • 2017 408选择题错题

    2017 408选择题错题 1 下列函数的时间复杂度是 int func int n int i 0 sum 0 while sum lt n sum i return i sum i 等于 sum sum i sum 0 i 0 sum
  • OS——文件管理系统磁盘的结构之搞清盘面和柱面

    如上图 每个柱面有三个盘面 即就是3个磁道 柱面可以抽象的理解成是一个套一个的立体的同心圆柱体 例 2019年408真题 磁盘有300个柱面 每个柱面有10个磁道 每个磁道有200个扇区 扇区大小为512B 则磁盘容量 分析 每个柱面有10
  • 【408】计算机学科专业基础 - 计算机组成原理

    一 计算机系统概述 复习提示 本章是组成原理的概述 考查时易针对有关概念或性能指标出选择题 也可能综合后续章节的内容出有关性能分析的综合题 掌握本章的基本概念 是学好后续章节的基础 部分知识点在初学时理解不深刻也无须担忧 相信随着后续章节的

随机推荐