找到二叉树的宽度

doj*_*ner 7 java algorithm binary-tree

找到二叉树的宽度.

在我的每个假期的代码中,我在哈希映射中创建一个条目,并在我离开i时找到一个节点时不断更新它.最后我将迭代hashmap以找到最大宽度.但是我怎么能不使用任何classleel/global varaiables?

Map<Integer,Integer> mp = new HashMap<Integer,Integer>();
void width(Node node,int level){
        if(node==null)
            return;
        if(mp.containsKey(level)){
            int count = mp.get(level);
            mp.put(level, count+1);
        }else{
            mp.put(level, 1);
        }

        width(node.left, level+1);
        width(node.right, level+1);

    }
Run Code Online (Sandbox Code Playgroud)

Rob*_*een 5

只需在方法中创建HashMap,然后将所有工作移动到辅助方法,如下所示:

void width(Node node,int level){
    Map<Integer,Integer> mp = new HashMap<Integer,Integer>();
    widthImpl(mp, node, level);
    // find maximum
}

private void widthImpl(Map<Integer,Integer> mp, Node node, int level) {
    if(node==null)
        return;
    if(mp.containsKey(level)){
        int count = mp.get(level);
        mp.put(level, count+1);
    }else{
        mp.put(level, 1);
    }

    widthImpl(mp, node.left, level+1);
    widthImpl(mp, node.right, level+1);
}
Run Code Online (Sandbox Code Playgroud)