首页 > 其他分享 >w9-2 求二叉树中节点间的宽度

w9-2 求二叉树中节点间的宽度

时间:2023-05-13 12:00:50浏览次数:33  
标签:结点 距离 宽度 二叉树 深度 节点 w9

如下图所示的一棵二叉树的深度、宽度及结点间距离分别为:

深度:4 宽度:4(同一层最多结点个数)

结点间距离: ⑧→⑥为8 (3×2+2=8)

⑥→⑦为3 (1×2+1=3)

注:结点间距离的定义:由结点向根方向(上行方向)时的边数×2,

与由根向叶结点方向(下行方向)时的边数之和。

输入格式

输入文件第一行为一个整数n(1≤n≤100),表示二叉树结点个数。接下来的n-1行,表示从结点x到结点y(约定根结点为1),最后一行两个整数u、v,表示求从结点u到结点v的距离。

输出格式

三个数,每个数占一行,依次表示给定二叉树的深度、宽度及结点u到结点v间距离。

输入输出样例

输入 #1
10                                
1 2                            
1 3                            
2 4
2 5
3 6
3 7
5 8
5 9
6 10
8 6
输出 #1
4
4
8
#include <iostream>
#define _for(i, a, b) for (int i=(a); i<=(b); i++)
using namespace std;

const int MAXN = 1e6 + 10;

struct node {
    int left, right;
};
node tree[MAXN];//存储结构定义

int n, ans;

void dfs(int id, int deep) {
    if (id == 0) return ;//到达叶子节点时返回
    ans = max(ans, deep);//更新答案
    dfs(tree[id].left, deep+1);//向左遍历
    dfs(tree[id].right, deep+1);//向右遍历
}

int main() {
    cin >> n;
    _for (i, 1, n) cin >> tree[i].left >> tree[i].right;//读入+建树
    dfs(1, 1);//从1号节点出发,当前深度为1
    cout << ans << endl;//输出答案
    return 0;//完结撒花!
}

 

标签:结点,距离,宽度,二叉树,深度,节点,w9
From: https://www.cnblogs.com/lijunjie03/p/17397078.html

相关文章

  • 第五章 5.3.3 构造二叉树
    不同二叉树的遍历序列由不同遍历序列的组合推出原二叉树的结构前序,后序,层序的组合不能推出原结构,因为无法区分左右子树线索二叉树(可称为线索链表)二叉树又可称为二叉链表.中序线索二叉树的存储先序线索二叉树后序线索二叉树三种线索二叉树根据遍历顺序不同,......
  • #yyds干货盘点# LeetCode程序员面试金典:对称二叉树
    1.简述:给你一个二叉树的根节点root,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false2.代码实现:classSolution{publicbooleanisSymmetric(TreeNoderoot){returncheck(root,root);}......
  • 2023-05-12:存在一个由 n 个节点组成的无向连通图,图中的节点按从 0 到 n - 1 编号, 给你
    2023-05-12:存在一个由n个节点组成的无向连通图,图中的节点按从0到n-1编号,给你一个数组graph表示这个图,其中,graph[i]是一个列表,由所有与节点i直接相连的节点组成。返回能够访问所有节点的最短路径的长度。你可以在任一节点开始和停止,也可以多次重访节点,并且可以重......
  • 【敲敲云】免费的零代码产品,流程节点 — 获取多条记录实战
    获取多条记录:此节点用于获取工作表中多条数据或多个数组,可以对获取到的多条数据批量编辑,或将获取到的多条数据批量新增到其他工作表中,也支持传递给子流程。获取多条记录节点类型:1.从工作表获取多条2.从单条记录获取关联记录3.从新增节点获取记录1.从工作表获取多条......
  • 单节点FC8.2.0 补丁升级
    给单节点FC8.2.0打补丁升级前景提要:登录CNA节点的gandalf用户rpm-qa|grepnetwork-scripts(回显信息)network-scripts-10.04-1.h7.eulerosv2r10#回显的版本号信息中包含“h7”,则可以直接升级#否则,先升级至8.2.0.SPC2补丁版本解压升级工具FusionComputeUpdateTool_......
  • 力扣124. 二叉树中的最大路径和
    二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例......
  • 2023-05-10:给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表 如果在二叉
    2023-05-10:给你一棵以root为根的二叉树和一个head为第一个节点的链表如果在二叉树中,存在一条一直向下的路径且每个点的数值恰好一一对应以head为首的链表中每个节点的值,那么请你返回True否则返回False。一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径......
  • js基础---js操作dom元素节点的方法
    replaceWith():使用括号内元素替换当前元素remove():删除当前元素解决点击a标签不跳转页面的方法......
  • 学校的数据结构实验_二叉树c语言实现
    二叉树的实现包括二叉树的构建,和二叉树的前中后序便利,二叉树的层序非递归遍历,求二叉树的总结点,求二叉树的最大深度和求二叉树的最大宽度,因为实验主要是对二叉树的各个属性数据测量,所以这里手动链接了一颗二叉树.随后用调用函数接口传参二叉树的根节点测量二叉树的属性.递......
  • 968. 监控二叉树
    给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。我的解法classSolution{private:......