将二叉树结构转换为双向链表 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; } }
相关文章推荐
- (Java实现)输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
- JAVA 语言中链表和双向链表的实现
- Data structure-4 双向链表 DoubleLinkedList--Java语言实现
- java 语言中链表和双向链表的实现!
- 数据结构中怎样用先根和中根以及中根和后根建立一颗二叉树(Java语言实现)
- java数据结构:双向链表结构与实现
- java语言实现双向链表
- Java语言中链表和双向链表的实现-Java基础-Java-编程开发
- Java语言中链表和双向链表的实现
- Java语言中链表和双向链表的实现
- Java语言中链表和双向链表的实现
- java实现二叉树的三种遍历方式,并把二叉树转为双向链表,输出二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树22:二叉搜索树与双向链表
- Java语言中链表和双向链表的实现
- Java语言中链表和双向链表的实现
- 将二叉查找树转换成双向链表 java实现
- 数据结构(三)---双向循环链表的实现---java版
- 数据结构与算法(4)---Java语言实现:队列的单链表定义
- Java数据结构之双端链表原理与实现方法
- (算法)二叉树转换为双向链表