递归思路
传入数组
传入单个对象
传入数组
内部先遍历进行单个对象处理,
再递归单个对象的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;
这里只是列举一些常见的处理方式,不同的情况,还是可能需要些区分的处理