实现Java树方法
我必须为二叉树实现递归方法,我想看看我编写的方法是否正确实现,因为我无法测试它们。这些都不是实际的方法。我只需要编写算法的伪代码 a) 计算树中的节点数实现Java树方法,java,Java,我必须为二叉树实现递归方法,我想看看我编写的方法是否正确实现,因为我无法测试它们。这些都不是实际的方法。我只需要编写算法的伪代码 a) 计算树中的节点数 countNodes(TreeNode root){ if(root == null) return 0; else{ TreeNode left = root.getLeftChild(); TreeNode right = root.getRightChild();
countNodes(TreeNode root){
if(root == null)
return 0;
else{
TreeNode left = root.getLeftChild();
TreeNode right = root.getRightChild();
return (countNodes(left)+countNodes(right)) + 1;
}
}
b) 计算树的高度
height(TreeNode root){
if(root == null)
return 0;
else{
return Math.max(height(root.getLeftChild()), height(root.getRightChild()) +1;
}
}
c) 找到最大元素
maxElem(TreeNode root){
if(root == null)
return 0;
else{
int temp = 0;
temp = Math.max(maxElem(root.getLeftChild()), maxElem(root.getRightChild()));
return Math.max(root.getValue, temp);
}
}
d) 求元素的和
sum(TreeNode root){
if(root == null)
return 0;
else{
return (sum(root.getLeftChild()) + sum(root.getRightChild())) + root.getValue();
}
}
e) 求元素的平均值
average(TreeNode root){
int sum = sum(root);
int elems = countNodes(root);
return sum/elems;
}
f) 查找特定项目
search(int i, TreeNode root){
if(root == null)
return false;
else if(root.getValue == i)
return true;
else{
search(i, root.getLeftChild);
search(i, root.getRightChild);
}
}
g) 确定一个项目是否是另一个项目的祖先
isAncestor(TreeNode p, NodeNode c){
if(p==null)
return false;
else
return (c in p.getLeftChild() || c in p.getRightChild())
}
h) 确定已满的最高级别
maxFull(TreeNode root)
if(root == null)
return 0;
else{
return(numNodes in level h == 2^h - 1)
}
}
你的MaxElm方法是错误的。如果所有元素都有负值,则它将不起作用 我必须为二叉树实现递归方法,我想看看我编写的方法是否正确实现,因为我无法测试它们。这些都不是实际的方法。我只需要编写算法的伪代码 您可以测试它们 用Java编写它们作为真实代码,编写一些单元测试,运行它们 如果你必须在一天结束时提交的东西是伪代码而不是真正的代码,那么你可以手动将Java翻译回伪代码
严格来说,除非您指定了伪代码语言的含义,否则无法判断伪代码是否正确。有几个小问题: 1) Asmitisted建议,如果您的树只包含负值,则maxElem不起作用
2) 平均值可能不正确,因为这是int而不是double,请尝试对树元素的总和和计数进行类型转换,然后返回它们的商。
3) 在函数搜索中,在最后一条else语句中不返回任何内容。尝试:
返回搜索(i,root.getLeftChild())|搜索(i,root.getRightChild())代码>(在代码的其余部分中,这些是函数而不是属性…
对于其他人来说,这似乎很好:)你有具体的问题吗?如果不是,你的问题可能会得到更好的回答。从这个伪代码中,创建真正的代码应该不会太难。这些伪代码中的大部分将按原样工作,或者只需稍加修改。然后您可以使用单元测试或与标准库进行比较。元素应该是正整数。除了你认为上面的代码实现正确之外?