我正在执行一项任务,我必须实现这两种方法( add() 和 inOrder() )。
下面的代码是我到目前为止所拥有的。我需要帮助的是调整代码以使其正常工作。目前,它没有做我想做的事。
add() 只会在树上添加最多 3 个级别,之后它只会更改第 3 级的节点。我不确定如何编写代码以使其超过 3 个级别。
inOrder() 不起作用。当我跑步时,它只是停下来,什么也不打印,迫使我停止跑步。
如果您需要更多信息,请与我们联系。
添加():
public void add(int v)
{
// TODO: implement this method using a non-recursive solution
BSTNode newNode = new BSTNode(v);
BSTNode current = m_root;
if(m_root == null)
{
m_root = newNode;
m_size++;
}
else if(v < m_root.getInfo())
{
if(m_root.getLeft() == null)
{
m_root.setLeft(newNode);
m_size++;
}
else if(m_root.getLeft() != null)
{
if(v < m_root.getLeft().getInfo())
{
m_root.getLeft().setLeft(newNode);
m_size++;
}
else if(v > m_root.getLeft().getInfo())
{
m_root.getLeft().setRight(newNode);
m_size++;
}
}
}
else if(v > m_root.getInfo())
{
if(m_root.getRight() == null)
{
m_root.setRight(newNode);
m_size++;
}
else if(m_root.getRight() != null)
{
if(v > m_root.getRight().getInfo())
{
m_root.getRight().setRight(newNode);
m_size++;
}
else if(v < m_root.getRight().getInfo())
{
m_root.getRight().setLeft(newNode);
m_size++;
}
}
}
}
为了():
// print the tree content using in-order traveral
public void inOrder()
{
// TODO: implement this method using a non-recursive solution
BSTNode current = m_root;
Stack<BSTNode> stack = new Stack<BSTNode>();
while(true)
{
if(current != null)
{
stack.push(current);
//current = m_root.getLeft();
m_root.setLeft(current);
//current.setLeft(current.getLeft());
}
else
{
if(stack.isEmpty())
{
break;
}
//stack.pop();
System.out.println(stack.pop());
m_root.setLeft(current);
//current = m_root.getLeft();
//current.getRight();
}
}
}