TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
- /**
- *
- * 在JAVA中实现二叉树结构
- *
- * 讲解:
- * 二个方法函数,一个寻找关键字--searchkey 另一个是插入一个结点:insertTree
- * 另外这是一个完全的先序遍历二叉树的语法。先根结点,再左结点,如无再右结点,
- * 如此递归至搜索完毕。
- *
- */
- 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("找到了:" + key);
- } else {
- System.out.println("没有找到:" + 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; //key:任意数值
- b.serach(key); //到二叉树中查找
- }
- }
- 运行结果:
- C:java>java BinaryTreeTest
- 二叉树的中的数据结构:
- ------------------------------------
- 12:root
- 11: -> new leftpoiter
- 34: -> new rightpoiter
- 45: -> rightpoiter -> new rightpoiter
- 67: -> rightpoiter -> rightpoiter -> new rightpoiter
- 38: -> rightpoiter -> rightpoiter -> new leftpoiter
- 56: -> rightpoiter -> rightpoiter -> rightpoiter -> new leftpoiter
- 43: -> rightpoiter -> rightpoiter -> leftpoiter -> new rightpoiter
- 22: -> rightpoiter -> new leftpoiter
- 8: -> leftpoiter -> new leftpoiter
- ------------------------------------
- 找到了:8
-
复制代码
源码下载:http://file.javaxxz.com/2014/11/4/000147765.zip |
|