嘿伙计我有深度问题(找到二叉树的深度)和printTree(按顺序打印树)。这是我的代码。
Bar
这是我提供的用于测试这些方法的Test类。
import java.util.LinkedList;
import java.util.Queue;
public class BSTDictionary<T1, T2>{
private static class Node<T>{
public Node<T> left;
public Node<T> right;
public T data;
public Node(T data)
{
this.data = data;
}
public Node<T> getLeft()
{
return this.left;
}
public void setLeft(Node<T> left)
{
this.left = left;
}
public Node<T> getRight()
{
return this.right;
}
public void setRight(Node<T> right)
{
this.right = right;
}
}
public int depth(Node root){
if(root == null) {
return 0;
}
else return 1 + Math.max((root.getLeft(), root.getRight());
}
public void printTree(){
Node<?> n;
Queue<Node<?>> nodequeue = new LinkedList<Node<?>>();
while (!nodequeue.isEmpty())
{
Node<?> next = nodequeue.remove();
System.out.print(next.data + " ");
if (next.getLeft() != null)
{
nodequeue.add(next.getLeft());
}
if (next.getRight() != null)
{
nodequeue.add(next.getRight());
}
}}}
谢谢你们:)
答案 0 :(得分:2)
public int depth(Node root){
if(root == null) {
return 0;
}
else return 1 + Math.max((root.getLeft(), root.getRight());
}
将最后一行替换为else return 1 + Math.max(depth(root.getLeft()), depth(root.getRight()));
其他消息来自您未在问题中包含的搜索功能。
答案 1 :(得分:1)
返回1 + Math.max时出现编译错误((root.getLeft(),root.getRight());
有一个额外的(并且root.getLeft返回的节点不是int类型。
我不确定你将如何获得树深度...只获得root.getLeft,因为它只会将节点返回到左边。根据我的理解,我们需要获取节点数然后再添加1它。
我也在尝试和你一起学习BST。如果我发现其他任何事情,我会告诉你。如果我的理解有问题,你也请告诉我。
快乐学习!