【发布时间】:2017-03-12 15:54:09
【问题描述】:
代码正在编译但不显示结果。 我使用方法 insertIntoBinaryTree() 将节点插入到二叉树中,并使用方法 printLevelOrder() 来逐级显示二叉树。但它没有显示任何内容。请检查代码。
public class BinaryTree {
public class TreeNode{
TreeNode left;
TreeNode right;
int data;
TreeNode(int data)
{
this.left=null;
this.right=null;
this.data=data;
}
public int getData()
{
return data;
}
public void setData(int data)
{
this.data=data;
}
public void setLeft(TreeNode left)
{
this.left=left;
}
public void setRight(TreeNode right)
{
this.right=right;
}
public TreeNode getLeft()
{
return left;
}
public TreeNode getRight()
{
return right;
}
}
TreeNode root;
BinaryTree()
{
root=null;
}
public void insertRoot(int data)
{
TreeNode node= new TreeNode(data);
root=node;
}
public void insertIntoBinaryTree(int data)
{
TreeNode node= new TreeNode(data);
Queue<TreeNode> q = new LinkedList<TreeNode>();
TreeNode temp;
q.offer(root);
while(!q.isEmpty())
{
temp=q.poll();
if(temp!=null)
{
if(temp.getLeft()!=null)
{
q.offer(temp.getLeft());
}
else
{
temp.setLeft(node);
}
if(temp.getRight()!=null)
{
q.offer(temp.getRight());
}
else
{
temp.setRight(node);
}
}
}
}
public void printLevelOrder()
{
TreeNode cur;
Queue<TreeNode> ql= new LinkedList<TreeNode>();
ql.offer(root);
while(!ql.isEmpty())
{
cur= ql.poll();
System.out.println(cur.getData()+ " ");
if(cur.getLeft()!=null)
ql.offer(cur.getLeft());
if(cur.getRight()!=null)
{
ql.offer(cur.getRight());
}
}
}
public static void main(String args[])
{
BinaryTree bt = new BinaryTree();
bt.insertRoot(1);
bt.insertIntoBinaryTree(2);
bt.insertIntoBinaryTree(3);
bt.insertIntoBinaryTree(4);
bt.insertIntoBinaryTree(5);
bt.insertIntoBinaryTree(6);
bt.printLevelOrder();
}
}
【问题讨论】:
-
你调用什么来打印树?有主方法还是测试用例?
-
是的,我已经添加了主要方法。请检查错误
-
是时候(学习)使用调试器了
标签: java data-structures binary-tree