参见英文答案 > Binary tree level order traversal 5个
我正在尝试在二叉树上进行线性顺序遍历,但无法获得正确的输出.基本上我已经创建了一个队列并从排队根开始,然后直到队列为空我将第一个元素出列并将其子元素添加到队列的末尾.出列时,它返回一个泛型元素().我在将此元素转换为树节点时遇到问题,以便我可以在下一步中将其子节点排队到队列的末尾.这是我到目前为止所做的:
public void levelOrderTraversal()
{
NodeQueue<E> queue = new NodeQueue<E>();
BTPosition<E> current = root;
queue.enqueue(current.element());
E temp = null;
while(!queue.isEmpty())
{
temp = queue.dequeue();
System.out.println(temp.toString());
current.setElement(temp);
if (hasLeft(current))
{
queue.enqueue(left(current).element());
}
if (hasRight(current))
{
queue.enqueue(right(current).element());
}
}
}
BTPosition和NodeQueue的API可以在http://net3.datastructures.net/doc4/index.html?net/datastructures/找到
任何建议真的很感激..
解决方法:
您希望队列的类型为BTPosition< E>. < E – 代替;只是对象类型,例如Integer或String. BTPosition似乎是二叉树中的实际节点.
public void levelOrderTraversal()
{
NodeQueue<BTPosition<E>> queue = new NodeQueue<BTPosition<E>>();
BTPosition<E> current = root;
queue.enqueue(current);
while(!queue.isEmpty())
{
current = queue.dequeue();
System.out.println(temp.element().toString());
if (current.getLeft() != null)
{
queue.enqueue(current.getLeft());
}
if (current.getRight() != null)
{
queue.enqueue(current.getRight());
}
}
}
标签:java,tree-traversal 来源: https://codeday.me/bug/20190626/1292169.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。