如何在非二叉树中获得叶子的水平

时间:2018-08-06 21:15:29

标签: java tree

我已经构建了一个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  
    }

1 个答案:

答案 0 :(得分:3)

level通常称为深度或高度。

public int getLevel(){
    Node temp = parent;
    int depth = 0;
    while(temp != null){
        depth++;
        temp = temp.parent;
    }
    return depth;
}

如果有一个当然的循环,这将不起作用,但无论如何都不应在树中出现一个循环。