private SchemaNode generateComplexSchemaTree(int deep, int width) {
    SchemaNode root = new SchemaInternalNode("root");

    List<SchemaNode> nodes = new ArrayList<>();
    MeasurementSchema schema = new MeasurementSchema("s", TSDataType.INT32);
    for (int i = 0; i < width; i++) {
      SchemaEntityNode entityNode = new SchemaEntityNode("d" + i);
      nodes.add(entityNode);
      root.addChild("d" + i, entityNode);
    }
    for (int i = 0; i < deep - 1; i++) {
      List<SchemaNode> nextLevelNode = new ArrayList<>();
      for (SchemaNode parent : nodes) {
        SchemaMeasurementNode measurementNode = new SchemaMeasurementNode("s", schema);
        parent.addChild("s", measurementNode);
        for (int j = 0; j < width; j++) {
          SchemaEntityNode entityNode = new SchemaEntityNode("d" + j);
          parent.addChild("d" + j, entityNode);
          nextLevelNode.add(entityNode);
        }
      }
      nodes = nextLevelNode;
    }
    for (SchemaNode parent : nodes) {
      SchemaMeasurementNode measurementNode = new SchemaMeasurementNode("s", schema);
      parent.addChild("s", measurementNode);
    }

    return root;
  }
Generate complex schemaengine tree with specific deep and width. For example, if deep=2 and
width=3, the schemaengine tree contains timeseries: root.d0.s, root.d1.s, root.s2.s,
root.d0.d0.s, root.d0.d1.s, root.d0.d2.s, root.d1.d0.s, root.d1.d1.s, root.d1.d2.s,
root.d2.d0.s, root.d2.d1.s, root.d2.d2.s

@param deep deep
@param width width
@return root node
iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/common/schematree/ClusterSchemaTreeTest.java