408数据结构真题2014-41

简介: 408数据结构真题2014-41

文章目录

  • 题目
  • AC代码


题目

本题链接:AcWing 3766. 二叉树的带权路径长度

image.png

注:链接题目仅代表和本题大体相似

因为是考研笔试,本题代码以C语言去写

AC代码

代码解释:本题要求的是带权路径的长度之和,带权路径的长度 = 权值点 * 该点到根节点的距离,下面举一个栗子去说明这一点:

image.png

比如栗子中给的这棵树,带权路径的长度之和 = (12 * 1 + 2 * 1 + 6 * 2 + 4 * 2) = 34

题目中要求的是所有叶节点的带权路径之和,故不包含2这个点,答案为:(12 * 1 + 6 * 2 + 4 * 2) = 32,不难看出,本题其实是要求我们遍历这棵树,我们遍历树的方法可以采用dfs和bfs两种方法,笔试建议采用dfs的写法,dfs写起来要比bfs精简很多!


代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int dfs(struct TreeNode* root, int depth){
    if (!root) return 0;
    if (!root -> left && !root -> right)
        return root -> val * depth;
    else return dfs(root -> left, depth + 1) + dfs(root -> right, depth + 1);
}
int pathSum(struct TreeNode* root) {
    return dfs(root, 0);
}



目录
相关文章
|
机器学习/深度学习 存储 算法
408考研数据结构复习-时间复杂度与空间复杂度-附统考真题
408考研数据结构复习-时间复杂度与空间复杂度-附统考真题
417 0
408考研数据结构复习-时间复杂度与空间复杂度-附统考真题
|
C语言
408数据结构真题2019-41
408数据结构真题2019-41
190 0
408数据结构真题2019-41
|
C语言
408数据结构真题2015-41
408数据结构真题2015-41
106 0
408数据结构真题2015-41
|
C语言
408数据结构真题2012-42
408数据结构真题2012-42
150 0
408数据结构真题2012-42
|
机器学习/深度学习 人工智能 搜索推荐
【恋上数据结构】归并排序 + LeetCode真题
【恋上数据结构】归并排序 + LeetCode真题
175 0
【恋上数据结构】归并排序 + LeetCode真题
LintCode 题解丨面试真题:两数之和 III-数据结构设计
LintCode 题解丨面试真题:两数之和 III-数据结构设计
LintCode 题解丨面试真题:两数之和 III-数据结构设计
|
2月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
265 9
|
2月前
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
42 1
|
5天前
|
存储 C语言 C++
【C++数据结构——栈与队列】顺序栈的基本运算(头歌实践教学平台习题)【合集】
本关任务:编写一个程序实现顺序栈的基本运算。开始你的任务吧,祝你成功!​ 相关知识 初始化栈 销毁栈 判断栈是否为空 进栈 出栈 取栈顶元素 1.初始化栈 概念:初始化栈是为栈的使用做准备,包括分配内存空间(如果是动态分配)和设置栈的初始状态。栈有顺序栈和链式栈两种常见形式。对于顺序栈,通常需要定义一个数组来存储栈元素,并设置一个变量来记录栈顶位置;对于链式栈,需要定义节点结构,包含数据域和指针域,同时初始化栈顶指针。 示例(顺序栈): 以下是一个简单的顺序栈初始化示例,假设用C语言实现,栈中存储
116 75
|
5天前
|
存储 C++ 索引
【C++数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】
【数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】初始化队列、销毁队列、判断队列是否为空、进队列、出队列等。本关任务:编写一个程序实现环形队列的基本运算。(6)出队列序列:yzopq2*(5)依次进队列元素:opq2*(6)出队列序列:bcdef。(2)依次进队列元素:abc。(5)依次进队列元素:def。(2)依次进队列元素:xyz。开始你的任务吧,祝你成功!(4)出队一个元素a。(4)出队一个元素x。
27 13
【C++数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】