[英]Though i'm performing Inorder Traversal for my Binary Tree, why it's displaying my Right sub Tree first?
I was performing in_order traversal for my binary tree,Instead of displaying my left sub tree first,it's displaying my right sub tree.我正在为我的二叉树执行 in_order 遍历,而不是首先显示我的左子树,而是显示我的右子树。 Please find my bug.
请找到我的错误。
//Inserting //插入
public void Insert(int data)
{
Node temp=new Node(data);
if(root==null) root=temp;
else
{
Node traverse=root;
Node parent=root;
while( traverse!=null )
{
parent=traverse;
if(traverse.Data > temp.Data) traverse=traverse.Right;
else traverse=traverse.Left;
}
if( parent.Data > temp.Data ) parent.Right=temp;
else parent.Left=temp;
}
}
//Inorder Traversal //中序遍历
public void display(Node traverse)
{
if(traverse != null)
{
display(traverse.Left);
System.out.print(traverse.Data+"->");
display(traverse.Right);
}
}
Output should be: 12->15->18->20->22->25->30输出应该是:12->15->18->20->22->25->30
In insert
there is an issue in this code:在
insert
中,此代码存在问题:
if(traverse.Data > temp.Data) traverse=traverse.Right;
else traverse=traverse.Left;
As temp
holds the data you want to insert, you are here storing lesser values in the right subtree of a node ( traverse
).由于
temp
保存了您要插入的数据,因此您在这里将较小的值存储在节点的右子树( traverse
)中。 It should be the opposite.应该是相反的。
The same mistake occurs after the loop, in this code:同样的错误发生在循环之后,在这段代码中:
if( parent.Data > temp.Data ) parent.Right=temp;
else parent.Left=temp;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.