java 递归 算 二叉树 层级?

Python015

java 递归 算 二叉树 层级?,第1张

层次遍历从方法上不具有递归的形式,所以一般不用递归实现。当然了,非要写成递归肯定也是可以的,大致方法如下。 void LevelOrder(BTree T, int cnt) { BTree level = malloc(sizeof(struct BTNode)*cnt)if(level==NULL) returnint i=0,rear=0if(cnt==0) returnfor(i=0i<cnti++){ printf("%c ",T[i].data)if(T[i].lchild) level[rear++]=*T[i].lchildif(T[i].rchild) level[rear++]=*T[i].rchild} printf("\n")LevelOrder(level, rear)free(level)} 补充一下,在main里面调用的时候就得用LevelOrder(T,1)了。

要是oracle多好,一句话搞定。

既然是java,给你伪代码,你补充吧:

String getDeptName(int level,String dept){

if(level==0){

return dept

}else if(level>=10){

return "层数太大"

}else{

return getDeptName(level-1,dept->childDeptName)

}

}

先递归出一个 node对象,再将node对象转换成json串。直接进行字符串的json操作不建议。

class Node{

private String id

private String parentId

private List<Node>children

public void addChildren(Node child){

getChildren().add(child)

}

public List<Node>getChildren()

public String transformTojson(Node node ,StringBuffer jsonStr){

//递归

if(jsonStr ==null){

StringBuffer jsonStr=new ()

}

if(node.id!=null){

//拼接父节点json串

jsonStr.append(id:node.id,children:#&children)

}

List childNodeList = node.getChildren()

StringBuffer childrenSB = new()

for( Node node :childNodeList){

childrenSB=transformTojson(node)

}

sonStr.replaceFirst("#&children",childrenSB)

return jsonStr

}

}

伪代码大概这样。

transformTojson方法可以不自己写,直接使用第三方工具jar包的json转化方法,比如gjson。