关于递归查询子节点,该如何解决

关于递归查询子节点
又遇到这种问题了,求教。

我有一个class是这样

public class GeographicalArea {

private String name;
private ArrayList<GeographicalArea> subAreas; //这是子结点
private ArrayList<GeographicalArea> containedBy;  //这是父节点

     。。。 。。。

public GeographicalArea[]  getAreayWithSubarea(){

//我要在这里实现返回所有的子节点



求助。。多谢
------解决方案--------------------
	public GeographicalArea[] getAreaWithSubarea() {
ArrayList<GeographicalArea> list = this.getSubarea();
GeographicalArea[] areas = new GeographicalArea[list.size()];
int i = 0;
for (GeographicalArea area : list) {
areas[i++] = area;
}
return areas;
}

private ArrayList<GeographicalArea> getSubarea() {
ArrayList<GeographicalArea> areas = new ArrayList<>();
for (GeographicalArea area : this.subAreas) {
areas.add(area);
areas.addAll(area.getSubarea());
}
return areas;
}