java - 找到二叉树的宽度

标签 java algorithm binary-tree

求二叉树的宽度。

在每次休假的代码中,我在 HashMap 中创建一个条目,并在我在休假 i 处找到一个节点时不断更新它。最后我将迭代 HashMap 以找到最大宽度。但是我如何在不使用任何节点的情况下做到这一点类/全局变量?

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);

    }

最佳答案

只需在方法内部创建 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);
}

关于java - 找到二叉树的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950151/

相关文章:

algorithm - 感知器学习算法 : convergence proof for the algorithm, 为什么 ||w*||等于 1 还是这个条件是必要的?

java - 如何确定与道路相连的城市的 A* 搜索算法中的 H 成本

python - 如何找到二叉树中特定节点的深度?

java - Maven TestNG 项目,用 Maven 命令行参数替换属性文件中的值

java - 使用 jarsplice 导出到 exe

algorithm - 谷歌模糊搜索(又名 "suggestions"): What technique(s) are in use?

C结构解析问题

java - 实现java接口(interface)时保证 "Object o"参数是同一个泛型类型

java - jax-rs ResponseFilter 中抛出的异常不会导致回滚

java - Hibernate 对象和 Java 反射