递归树思路总结思考

递归思路

传入数组
传入单个对象

传入数组

内部先遍历进行单个对象处理,
再递归单个对象的children

传入对象

内部先处理当前对象,再遍历对象children,对每个children进行递归调用。

需要处理返回值的情况
一种是传入对象指针,内部操作对象的值就好了
一种是逐层返回结果,需要处理结果的合并。

传值处理

函数的两种传值问题
/
一种传递指针进去,

var a={maxLevel = 0}
function func(a){a.maxLevel = 1;
}
func(a);
此时
a.maxLevel = 1;

///
一种传递值进去,

var maxLevel = 0
function func(a){a = 1;
}
func(maxLevel);

此时
maxLevel = 0。

逐层返回结果

把树变成列表这种返回列表的处理简单

list=new list()
list. add(obj)
for   list. addAll(func(obj. children[i]))
return list

单值就需要做合并处理,比如累加、取最大值、最小值。以取最大值为例

var result=obj. value
for   var tmp=func(obj. children[i])if(tmp>result)result=tmp
return result;

这里只是列举一些常见的处理方式,不同的情况,还是可能需要些区分的处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(2441):删除处理完成

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

5、用枚举值表示状态、选项、状态码

一、C语言中1、C语言中的枚举类型enum。在以一系列常量来表示错误状态码或可组合的选项时&#xff0c;极宜使用枚举为其命名。2、定义一个enumenum personAgeState { personAgeStateLitter,personAgeStateBigger};property (nonatomic, assign) enum personAgeState personAge;…

openjdk17体验

jdk17是继jdk8和jdk11之后的LTS版本&#xff0c;该版本支持到2029年12月&#xff0c;下载地址 https://jdk.java.net/17/ 我是ubuntu64位环境&#xff0c;下载linux/x64版本&#xff0c;解压 打开idea创建一个新项目&#xff0c;添加jdk17并设置为jdk17 写个helloworld packa…

linux zip分卷压缩解压命令

linux下有时因为文件过大&#xff0c;传输过程中需要将源文件压缩为多个zip文件&#xff0c;以下是具体方法 压缩 zip -r -s 1g split.zip fold/ -s 1g代表分卷大小 split.zip为压缩包名 fold/为待压缩的目录 解压 zip -s 0 split.zip --out unsplit.zip unzip unslit.zip…

不确定屏幕大小的弹窗垂直居中(用了box方法)

对于父元素高度不确定&#xff0c;又要实现上下左右对齐&#xff0c;只需要在弹窗的父元素上使用box布局&#xff0c;控制弹窗上下左右居中 <div class"pop_wrap"><div class"pop"></div> </div> .pop_wrap{display:-webkit-box;-…

npm i依赖版本兼容问题处理

npm i报错提示 whqwhq-Z270P-D3:/data/code/builder_git/xx$ npm i npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: webbq-cmm1.1.0 npm ERR! Found: webpack3.12.0 npm ERR! node_modules/webpack npm ER…

前端学习(2449):发布文章组件

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

centos7 geenplum5.x postgis开源版本编译

下载5.1 https://codeload.github.com/greenplum-db/gpdb/tar.gz/5.1.0 基础环境 tar xzvf gpdb-5.1.0.tar.gz cd gpdb-5.1.0 参照README.md、README.amazon_linux准备依赖 yum install -y epel-release yum install -y python-pip sudo yum -y install git gcc readline-dev…

linux查看基础硬件信息

#CPU核数 cat /proc/cpuinfo | grep "cpu cores" | uniq #CPU线程数 cat /proc/cpuinfo| grep "processor"| wc -l #内存大小 cat /proc/meminfo | grep MemTotal #硬盘信息 fdisk -l

前端学习(2450):页面布局制作

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

前端学习(2451):表单数据的绑定

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

mysql string types ---- mysql 字符类型详解

一、mysql 中包涵的字符类型&#xff1a; [national] char [(m)] [character set charset_name] [collate collation_name] [national] varchar [(m)] [character set charset_name] [collate collation_name]binary(m) -- 和char 只不过它用来保存二进制字节串…

前端学习(2452):封装数据接口

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

【NOIP2016】换教室

题目描述 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程。 在可以选择的课程中,有2n节课程安排在n个时间段上。在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课程同时在不同的地点进行, 其中, 牛牛预先被安排在教室 ci上课, 而另一节课程在教室…

react和react develop tools编译

下载 https://github.com/facebook/react/tags 我这里下载的18.0.0 下载react&#xff0c;里面的packages/react-devtools-extensions目录就是chrome等的扩展插件&#xff0c;需要编译下 需要yarn环境编译&#xff0c;如果需要安装yarn&#xff0c;使用命令 npm install --…

前端学习(2453):项目初始化

# 一、项目初始化## 使用 Vue CLI 创建项目> 注意&#xff1a;不要使用 Git Bash 执行项目创建操作&#xff0c;使用 cmd 或者 powershell 之类的工具。> 如果你还没有安装 VueCLI&#xff0c;或者版本低于 4&#xff0c;请执行下面的命令安装或是升级&#xff1a; >…

python爬虫:两种方法模拟登录博客园

第一方法用第三方库&#xff08;requests&#xff09;&#xff1a;参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单&#xff0c;查看网页源代码&#xff0c;可以发现两个输入框的id分别为input1、input2&#xff0c;复选框的id为re…

java zip压缩解压代码,亲测可用,压缩文件不会有合并问题

亲测可用&#xff0c;压缩文件不会有合并问题 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStrea…