我已经构建了一个Tree类,如下所示:
public class Node {
private int label;
private ArrayList<Node> children;
private Node parent;
public Node(int label) {
this.label = label;
this.children = new ArrayList<Node>();
this.parent = null;
}
public void addChild(Node child) {
this.children.add(child);
}
public int getLabel() {
return this.label;
}
public ArrayList<Node> getChildren() {
return this.children;
}
public Node getParent() {
return this.parent;
}
public void setParent(Node parent) {
this.parent = parent;
}
}
假设我有一个非二叉树:
1
|
9
/ | \
3 0 7
如何编写一种方法来获取非二叉树中的叶子(例如,用7
标记的节点)的级别?
public int getLevel() {
if (parent == null) return 0;
// Additional code is needed here
}
答案 0 :(得分:3)
level
通常称为深度或高度。
public int getLevel(){
Node temp = parent;
int depth = 0;
while(temp != null){
depth++;
temp = temp.parent;
}
return depth;
}
如果有一个当然的循环,这将不起作用,但无论如何都不应在树中出现一个循环。