java - Java中不使用队列的二叉树右 View

标签 java algorithm binary-tree

HERE是不使用队列的二叉树右 View 的c++实现。当我尝试将它转换为 Java 时,它不起作用。这是我的 Java 代码:

(我认为很可能是因为我没有正确理解算法和处理 maxLevel 指针/引用)

public static void rightView(TreeNode tNode){
    int maxLevel = 0;
    rViewUtil(tNode, 1,maxLevel);
}

public static void rViewUtil(TreeNode tNode, int level, int maxLevel){
    if(tNode==null)
        return;
    if(maxLevel < level){
        System.out.print(tNode.value + " ");
        maxLevel = level;
    }
    rViewUtil(tNode.right, level+1, maxLevel);
    rViewUtil(tNode.left, level+1, maxLevel);
}

最佳答案

本着@lifus 回答的精神,但避免可变状态,您可以使用函数 return 来设置 maxLevel

public static void rightView(TreeNode tNode){
    int maxLevel = 0;
    rViewUtil(tNode, 1,maxLevel);
}

public static int rViewUtil(TreeNode tNode, int level, int maxLevel){
    if(tNode==null)
        return;
    if(maxLevel < level){
        System.out.print(tNode.value + " ");
        maxLevel = level;
    }
    maxLevel = rViewUtil(tNode.right, level+1, maxLevel);
    maxLevel = rViewUtil(tNode.left, level+1, maxLevel);
    return maxLevel
}

关于java - Java中不使用队列的二叉树右 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326915/

相关文章:

java - Netty写入时如何找出是哪条消息导致异常?

java - 如何在 JSP 页面的不同部分调用 Java 方法

c - 主发电机分段故障

c - C 中的迭代二叉搜索树插入

c - 使用先序遍历从二叉树创建链表

python - Python 中的二叉树

java - 扩展/实现使用反射加载的类/接口(interface)

java - 在 request.getParameter ("something"中获取 null )

c# - 运行时如何生成随机数?

字符串字典顺序排列和反转