概述
使用场景
通常用于树结构的遍历,比如节点+子节点列表的方式的数据结构。
递归方法的出入口
明确递归方法的出入口。
入口尽量简单,入口需要是根接口。
出口就是不满足判断条件的最底层的接口,比如无子节点的节点,在出口做业务逻辑处理。
示例
public void deviceTree(TreeNode node, List<String> conditions) {
if (node.getChildren() == null) {
return node;
}
handTreeChildren(node, conditions);
return node;
}
private void handTreeChildren(TreeNode node, List<String> conditions) {
List<TreeNode > treeChildren = node.getChildren();
if (CollectionUtils.isNotEmpty(treeChildren)) {
treeChildren.forEach(node -> handTreeChildren(node, conditions));
}
boolean isContain= conditions.contains(node.getId());
if (FLAG.equals(node .getType()) && isContain) {
node.setFlag(ONE);
}
}