0001 /* 0002 * 基于链表实现二叉树 0003 */ 0004 0005 package dsa; 0006 0007 public class BinTree_LinkedList implements BinTree { 0008 protected BinTreePosition root;//根节点 0009 0010 /**************************** 构造函数 ****************************/ 0011 public BinTree_LinkedList() 0012 { this(null); } 0013 0014 public BinTree_LinkedList(BinTreePosition r) 0015 { root = r; } 0016 0017 /**************************** BinaryTree接口方法 ****************************/ 0018 //返回树根 0019 public BinTreePosition getRoot() 0020 { return root; } 0021 0022 //判断是否树空 0023 public boolean isEmpty() 0024 { return null == root; } 0025 0026 //返回树的规模(即树根的后代数目) 0027 public int getSize() 0028 { return isEmpty() ? 0 : root.getSize(); } 0029 0030 //返回树(根)的高度 0031 public int getHeight() 0032 {return isEmpty() ? -1 : root.getHeight(); } 0033 0034 //前序遍历 0035 public Iterator elementsPreorder() 0036 { return root.elementsPreorder(); } 0037 0038 //中序遍历 0039 public Iterator elementsInorder() 0040 { return root.elementsInorder(); } 0041 0042 //后序遍历 0043 public Iterator elementsPostorder() 0044 { return root.elementsPostorder(); } 0045 0046 //层次遍历 0047 public Iterator elementsLevelorder() 0048 { return root.elementsLevelorder(); } 0049 }