Tree_Graph 打印所有和为定值的路径 @CareerCup

vue中使用antv G6 的树图TreeGraph G6 是一个图可视化引擎。它提供了图的绘制、布局、分析、交互、动画等图可视化的基础能力。它是一款国产可视化插件,中文官方文档方便阅读和学习。G6可以实现很多d3才能实现的可视化图表,d3作为一款国外很强大的可视化插件,它的官方文档是非汉语文档,社区虽然很活跃,但几乎是英文文档,阅读和学习起来并不是那么轻松,尤其是英语不太好的同学,阅读和学习d3更吃力。这时候G6就是不错的选择。因为G6包含丰富的图表类型,还可以实现节点,边等自定义。 代码如下(示例): ListaData.json........... 阅读详情

原文:

You are given a binary tree in which each node contains a value. Design an algorithm to print all paths which sum up to that value. Note that it can be any path in the tree - it does not have to start at the root.

译文:

给定一棵二叉树,每个结点包含一个值。打印出所有满足以下条件的路径: 路径上结点的值加起来等于给定的一个值。注意:这些路径不必从根结点开始。


思路:

非常好的一题!时间复杂度:O(nlogn),空间复杂度:O(logn)

结合了回溯和另外一个重要思想!


就是下面的代码:在path数组里保存着当前的路径,以及当前的层level,然后我们可以由当前层往上遍历,看能不能凑到sum

		// 统计从level(当前层)往上走,能否凑到sum
		// 重要思想!
		int t = 0;
		for(int i=level; i>=0; i--) {
			t += path[i];
			if(t == sum) {
				print(path, i, level);		// i: start, level: end
			}
		}

下面是总的代码:

package Tree_Graph;

import CtCILibrary.TreeNode;

public class S4_9 {

	public static void findSum(TreeNode root, int sum) {
		int depth = depth(root);
		int[] path = new int[depth];			// 建一个path数组,存放每一层的值
		findSum(root, sum, path, 0);
	}
	
	// 递归打印所有可能
	// path数组保存当前走过的路线,level表示当前到达的层
	public static void findSum(TreeNode root, int sum, int[] path, int level) {
		if(root == null){
			return;
		}
		
		path[level] = root.data;		// 先为当前层赋值
		
		// 统计从level(当前层)往上走,能否凑到sum
		// 重要思想!
		int t = 0;
		for(int i=level; i>=0; i--) {
			t += path[i];
			if(t == sum) {
				print(path, i, level);		// i: start, level: end
			}
		}
		
		findSum(root.left, sum, path, level+1);
		findSum(root.right, sum, path, level+1);
		
		path[level] = Integer.MIN_VALUE;		// 撤销当前层赋值
	}
	
	// 求高度
	public static int depth(TreeNode root) {
		if(root == null) {
			return 0;
		}
		return 1 + Math.max(depth(root.left), depth(root.right));
	}
	
	public static void print(int[] path, int start, int end) {
		for(int i=start; i<=end; i++) {
			System.out.print(path[i] + " ");
		}
		System.out.println();
	}
	
	public static void main(String [] args){
		TreeNode root = new TreeNode(5);
		root.left = new TreeNode(3);
		root.right = new TreeNode(1);
		root.left.left = new TreeNode(4);
		root.left.right = new TreeNode(8);
		root.right.left = new TreeNode(2);
		root.right.right = new TreeNode(6);
		findSum(root, 8);
	}
}






java实现绘制命令行二叉树 题目描述 二叉树是一种基本的数据结构,它要么为空,要么由根节点,左子树和右子树组成,同时左子树和右子树也分别是二叉树。 当一颗二叉树高度为m-1m−1时,则共有mm层。除mm层外,其他各层的结点数都达到最大,且结点节点都在第mm层时,这就是一个满二叉树。 现在,需要你用程序来绘制一棵二叉树,它由一颗满二叉树去掉若干结点而成。对于一颗满二叉树,我们需要按照以下要求绘制: 1、结点用小写字母“o”表示,对于一个父亲结点,用“/”连接左子树,同样用“\”连接右子树。 2、定义[i,j[i,j]为位于第ii行第jj 阅读详情

相关推荐

不止于HTTPS请求:用VS2022编译的libcurl玩转文件上传和代理设置

本文详细介绍了如何使用VS2022编译的libcurl库实现文件上传和高级代理配置。通过实战代码示例,展示了多部分表单上传、二进制数据上传以及各种代理设置技巧,帮助C++开发者提升网络编程能力。

weixin_28595749的博客 206

BFS,DFS,以及图(Graph),树(Tree)的思考(5)

计算机中的树(3) 红黑树(R-B Tree) 一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是red或black. 通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍.它是一种弱平衡二叉树(由于是若平衡,可以推出,相同的节点情况下,AVL树的高度低于红黑树),相对于要求严格的AVL树来说,它的旋转次数变少,所以对于搜索,插入,删除操作多的情况下,我们就用红黑树. 性质1:每个节点要么是红色,要么是黑色。 性质2:根节...

PigeonEssence的博客 1万+

ADS使用Smith圆图进行阻抗匹配

在处理RF系统的实际应用问题时,总会遇到一些非常困难的工作,对各部分级联电路的不同阻抗进行匹配就是其中之一。一般情况下,需要进行匹配的电路包括天线与低噪声放大器(LNA)之间的匹配、功率放大器输出(RFOUT)与天线之间的匹配、LNA/VCO输出与混频器输入之间的匹配。匹配的目的是为了保证信号或能量有效地从“信号源”传送到“负载”。 阻抗匹配(impedance matching) 信号源内阻与所接传输线的特性阻抗大小相等且相位相同,或传输线的特性阻抗与所接负载阻抗的大小相等且相位相同,分别称为传输线的输

红茶绿茶和奶茶的博客 3万+

树-图架构(Tree-Graph Architecture)

树-图架构以业务领域与功能模块的树形结构自上而下拆解为基础,保证各模块边界清晰、层次合理;模块间的交互、依赖、API协作与数据流转采用图结构表达,体现系统内真实的网状关联关系。整体架构兼具树的有序性与图的关联性,既便于业务人员理解业务分层,也能精准指导软件开发、模块集成与系统迭代。

qq_20466509的博客 934

稳定性仿真(stb闭环增益仿真)

stb仿真主要是测试电路的稳定性,例如运放在闭环电路中的增益和相位裕度的值,从而判别电路是否正常工作。 以下是stb仿真的过程: (1)调用iprobe器件 从analogLib中调iprobe器件,通过器件中的箭头标识确定接入电路的方法,箭头起点端连运放的输出端,箭头的终点端连在反馈环路的作用端。iprobe器件连入电路后相当于理想导线。(iprobe器件连接在反馈回路上) (2)analyses设置 勾选stb和frequency,此处的频率范围设置在0.1~1GHz,Probe Instance/T

qq_36686804的博客 3万+

AutoSAR开发实战:如何用Matlab/Simulink从零搭建SWC组件(附完整代码示例)

本文详细介绍了使用Matlab/Simulink从零开发AutoSAR SWC组件的全流程,包括环境配置、ARXML文件导入、算法模型开发、代码生成与集成验证等关键步骤。通过实战案例和完整代码示例,帮助开发者掌握AutoSAR标准下的软件开发技术,提升汽车电子系统的开发效率。

weixin_29093017的博客 256

vue中使用antv G6 的树图TreeGraph (紧凑树)②【新手学习向记录】

1、https://antv-g6.gitee.io/zh/docs/manual/middle/states/defaultBehavior/#collapse-expand

yuryS的博客 8262

宏基因组分析|从Binning到MAG优化的全流程实战指南

本文提供了一份宏基因组分析从Binning到MAG优化的全流程实战指南。详细解析了宏基因组分箱(Binning)的核心原理与必要性,并手把手指导如何利用Bowtie2、MetaBAT2和CheckM等工具构建分箱流水线,进行质量评估与筛选,最终获得高质量宏基因组组装基因组(MAG)。文章还分享了常见问题排查与进阶优化策略,为后续物种分类、功能注释等深度分析奠定坚实基础。

weixin_29260291的博客 455

AntV G6自定义树状图TreeGraph

只是为了记录下自己写的G6组件成果 G6去除生成图的动画效果animate G6拓扑图刷新页面按钮事件(刷新按钮根据页面变化展示不同的图片) 以下这段代码结合下面,标题“还有各种鼠标事件(G6拓扑图缩放事件等)”里的,根据数据创建树状图节createNode () 方法里的页面缩放操作,可以官方文档搜viewportchange属性了解页面事件

weixin_45594156的博客 4208

基于YOLOv11的工业零件表面缺陷检测系统:从原理到实现

工业质量控制是制造业的核心环节,表面缺陷检测作为其中重要组成部分,直接关系到产品质量和企业效益。本文详细介绍了一种基于YOLOv11深度学习算法的工业零件表面缺陷检测系统,包含完整的算法原理分析、数据集构建方法、模型训练策略以及用户界面设计。通过大量实验验证,该系统能够高效准确地检测零件表面的划痕、凹陷、锈蚀等多种缺陷,检测精度达到96.2%,满足工业实时检测需求。本文还提供了完整的代码实现和详细的技术文档,为相关领域的研究者和工程师提供参考。关键词:表面缺陷检测;YOLOv11;深度学习;工业视觉;

YOLO 567

【论文复现】——基于NDT与ICP结合的点云配准算法(matlab版)

基于NDT与ICP结合的点云配准算法matlab版

点云侠的博客 490

vue中使用antv G6 的树图TreeGraph (紧凑树)①【新手学习向记录】

在vue中使用antv G6 树图,根据数据数值自定义节点。

yuryS的博客 9211

【MATLAB】嵌入式ADC/DAC控制工程

摘要:本文针对嵌入式ADC/DAC应用中存在的量化误差、采样噪声、输出漂移等问题,提出基于MATLAB的仿真优化方案。通过构建完整的ADC/DAC仿真模型,实现了采样建模、数字滤波、误差校准和闭环控制仿真。方案采用滑动平均滤波抑制ADC噪声,双校准参数补偿DAC固有误差,并将算法轻量化移植至STM32平台。实测表明,该方案使ADC采样波动从±25mV降至±5mV,DAC输出偏差从42mV降至18mV,显著提升了模拟量交互精度和系统稳定性。整套方案资源占用低,适配各类嵌入式高精度控制场景,具有较高的工程应用价

unber的博客 648

antvG6开发treeGraph踩过的坑-自定义节点命名和渲染数据冲突/子树id相同渲染冲突

antvG6开发treeGraph踩过的坑-自定义节点命名和渲染数据冲突/子树id相同渲染冲突

Tian_std_scu的博客 2584

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【实践功能记录3】AntV G6 拓扑结构

antv G6 树图

cpsxn的博客 2189

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

推荐项目:PSTreeGraph

推荐项目:PSTreeGraph 项目简介 PSTreeGraph 是一个开源的命令行工具,用于生成进程树图形化表示,并提供可视化展示。该项目由 epreston 开发并托管在 GitCode 上,可免费供开发者们使用。 项目用途 PSTreeGraph 主要用于帮助开发者更好地理解和分析系统中的进程关系。通过将进程间的层次结构以图形方式呈现,可以直观地查看不同进程之间的依赖关系、父子进程等信息。...

gitblog_00010的博客 475

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

g6基本配置

export function treeVisualization(graph: any, clickTreeData: any, treeDom: any, Treedata: any) { //初始化定义 graph.value = new G6.TreeGraph({ container: "container", //容器 width: 1300, //显示树的内容区宽度 height: 1000,//显示树的内容区高度

weixin_57011137的博客 1863

Echarts可视化开发之树型图(公司人事架构图)

引言:Echarts是百度开发的一款可视化的开源js框架,诸如此类的框架很多,今天我们就重点研究Echarts。使用Echarts非常简单,我们将需要展示的数据源以及可视化效果以参数的形式传入Echarts中即可。 一.Echarts使用 我们以官网的一个关于制作简单的树形图为例子,说明Echarts开发的整套流程。 1.开发流程 1).编写visual.hmtl文件,并引入echarts

xqhadoop的博客 4万+

antv g6 摸索总结—新手入门

通过antvG6官网内置API实现树图的加载绚烂,以及对各个属性进行详细讲解,把过程中遇到的问题以及解答方案一一列举,随着各种需求,不断更新。

想卷回去的小菜鸡的博客 1万+

BFS,DFS,以及图(Graph),树(Tree)的思考(3)

计算机树(1) 从链表到二叉树 了解了数学图论中的图和树,接下来思考一下计算机中的树。 链表: 我们再算法最开始接触到的也是最常用的数据结构,就是链表,为什么说树要从链表开始?这就是一个数据结构的问题: 一般我们的链表形态是这样的: class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } 我们是在当前节点上,保存下一个节点,形成一个链式结构...

PigeonEssence的博客 1万+

TreeAndGraph(树和图)

1.实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个结点,其两棵子树的高度差不超过1。 class TreeNode { int data; TreeNode left; TreeNode right; public TreeNode(int value) { this.data = value...

weixin_30235225的博客 499

算法 - 图(Graph)- 生成树(Spanning Tree)

生成树(Spanning Tree),也称为支撑树 连通图的极小连通子图,它含有图中全部的n个顶点,恰好只有n-1条边 最小生成树(Minimum Spanning Tree) 最小生成树(Minimum Spanning Tree,简称MST) 也称为最小权重生成树(Minimum Weigth Spanning Tree)、最小支撑树 是所有生成树中,总权值最小的那棵 适用于有权的连通...

宋卓的博客 6577

PSTreeGraph

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34138377的博客 236

LintCode 246: Binary Tree Path Sum II

Binary Tree Path Sum II 中文English Your are given a binary tree in which each node contains a value. Design an algorithm to get all paths which sum to a given value. The path does not need to start or...

roufoo的博客 492

从上往下打印二叉树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701?tpId=13&tqId=11175&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/questio...

reigns的博客 166
上一篇: Tree_Graph 判断T2是否为T1的子树 @CareerCup
下一篇: 话说NOIP一些会考到的算法
chiiis
博客等级 码龄14年 422粉丝 429原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值