您的位置:首页 > 编程语言 > Java开发

将二叉树结构转换为双向链表 java语言实现

2014-09-05 11:31 876 查看
import java.util.ArrayList;

public class TreeToList
{
public static void main(String args[])
{
TreeToList ttl=new TreeToList();
int[]a=new int[]{8,6,9,5,7,8,12};
Nodel head=ttl.creatTree(a);
ttl.setList(head);
}
private Nodel creatTree(int[]b)
{
ArrayList<Nodel> arrayList=new ArrayList<Nodel>();
for(int i=0;i<b.length;i++)
{
Nodel node=new Nodel(b[i]);
arrayList.add(node);
}
for(int i=0;i<b.length/2;i++)
{
Nodel root=arrayList.get(i);
int leftIndex=i*2+1;
if(leftIndex<b.length)
{
root.setLeft(arrayList.get(leftIndex));
}
int rightIndex=leftIndex+1;
if(rightIndex<b.length)
{
root.setRight(arrayList.get(rightIndex));
}
}
Nodel head=arrayList.get(0);
return head;
}
//创建一颗二叉树
private Nodel previous;
private void setList(Nodel node)
{
if(node!=null)
{
this.setList(node.left);
if(this.previous!=null)
{
previous.right=node;
node.left=previous;
}
this.previous=node;
this.setList(node.right);
}

//形成双向链表

while(node!=null)
{
node=node.left;
}
while(node!=null)
{
System.out.print(node.x);
node=node.right;
}
}
}
class Nodel
{
Nodel left;
int x;
Nodel right;
public Nodel(int x)
{
this.x =x;
}

public void setLeft(Nodel left)
{
this.left = left;
}

public void setRight(Nodel right)
{
this.right = right;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: