转: 在JAVA中实现的二叉树结构
来源:互联网 发布:java c 区别 编辑:程序博客网 时间:2024/05/08 00:31
public class BinaryTreeTest { private BinaryTree root = null; public BinaryTreeTest() { init(); } private void init() { int data[] = { 12, 11, 34, 45, 67, 38, 56, 43, 22, 8 }; root = new BinaryTree(data[0]); System.out.println(":"); System.out.println("------------------------------------"); System.out.println(data[0] + ":root"); for (int i = 1; i < data.length; i++) { System.out.print(data[i] + ":"); root.insertTree(root, data[i]); } System.out.println("------------------------------------"); } public void serach(int key) { if (searchkey(root, key)) { System.out.println("have found it :" + key); } else { System.out.println("not found it :" + key); } } private boolean searchkey(BinaryTree root, int key) { if (root == null) { return false; } else if (root.data == key) { return true; } else if (key >= root.data) { return searchkey(root.rightpoiter, key); } return searchkey(root.leftpoiter, key); } class BinaryTree { int data; BinaryTree leftpoiter; BinaryTree rightpoiter; BinaryTree(int data) { this.data = data; leftpoiter = null; rightpoiter = null; } private void insertTree(BinaryTree root, int data) { if (data >= root.data) { if (root.rightpoiter == null) { System.out.println(" -> new rightpoiter"); root.rightpoiter = new BinaryTree(data); } else { System.out.print(" -> rightpoiter"); insertTree(root.rightpoiter, data); } } else { if (root.leftpoiter == null) { System.out.println(" -> new leftpoiter"); root.leftpoiter = new BinaryTree(data); } else { System.out.print(" -> leftpoiter"); insertTree(root.leftpoiter, data); } } } } public static void main(String args[]) { BinaryTreeTest b = new BinaryTreeTest(); int key = 8; b.serach(key); } }