由网友(滴了颗星星)分享简介:这里是C ++实现的右视图二叉树不用排队。当我尝试将其转换为Java的,它不工作。这里是我的Java code:(我认为最有可能是因为我还没有理解正确的算法和处理maxLevel指针/参考)公共静态无效rightView(树节点TNODE){INT maxLevel = 0;rViewUtil(TNODE,1,max...
这里是C ++实现的右视图二叉树不用排队。当我尝试将其转换为Java的,它不工作。这里是我的Java code:
(我认为最有可能是因为我还没有理解正确的算法和处理maxLevel指针/参考)
公共静态无效rightView(树节点TNODE){
INT maxLevel = 0;
rViewUtil(TNODE,1,maxLevel);
}
公共静态无效rViewUtil(树节点TNODE,INT水平,诠释maxLevel){
如果(TNODE == NULL)
返回;
如果(maxLevel<Ⅲ级){
System.out.print(tNode.value +);
maxLevel =水平;
}
rViewUtil(tNode.right,等级+ 1,maxLevel);
rViewUtil(tNode.left,等级+ 1,maxLevel);
}
解决方案
在@lifus回答的精神,同时避免可变的状态,您可以使用函数的返回到设置 maxLevel
公共静态无效rightView(树节点TNODE){
INT maxLevel = 0;
rViewUtil(TNODE,1,maxLevel);
}
公共静态INT rViewUtil(树节点TNODE,INT水平,诠释maxLevel){
如果(TNODE == NULL)
返回;
如果(maxLevel<Ⅲ级){
System.out.print(tNode.value +);
maxLevel =水平;
}
maxLevel = rViewUtil(tNode.right,等级+ 1,maxLevel);
maxLevel = rViewUtil(tNode.left,等级+ 1,maxLevel);
返回maxLevel
}
HERE is the c++ implementation for right view of binary tree without using queue. When I try to convert it to Java, it is not working. Here is my Java code:
(I think most likely it is because I have not understood the algorithm properly and handling of maxLevel pointers/reference)
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);
}
解决方案
In the spirit of @lifus' answer, but avoiding mutable state, you can use the function return to set 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
}
相关推荐
最新文章