美文网首页
java(十三) 简单二叉树实现

java(十三) 简单二叉树实现

作者: Nic_ofh | 来源:发表于2017-09-29 00:22 被阅读0次

    一、BinaryTreeDemo类

    package 二叉树;
    
    public class Demo {
        public static void main(String[] args) {
            BinaryTree binaryTree = new BinaryTree();
            binaryTree.add(8);
            binaryTree.add(1);
            binaryTree.add(22);
            binaryTree.add(33);
            binaryTree.add(17);
            binaryTree.add(4);
            binaryTree.add(2);
            binaryTree.add(6);
    
            binaryTree.printCenterTree();
            System.out.println("中序");
    
            binaryTree.printBeforeTree();
            System.out.println("前序");
    
            binaryTree.printAfterTree();
            System.out.println("后序");
    
        }
    }
    

    二、BinaryTree类

    package 二叉树;
    
    // 比较小的数放在左边,比较大的书放在右边
    public class BinaryTree {
    
        private Node root; // 先定义一个根节点
    
        public void add(int data) {
            if (root == null) {  // 如果跟节点不存在,就把数据放在根节点
                root = new Node(data);
            } else {
                root.addNode(data);
            }
        }
    
        public void printCenterTree() {
            root.printCenterNode();
        }
    
        public void printBeforeTree() {
            root.printBeforeNode();
        }
    
        public void printAfterTree() {
            root.printAfterNode();
        }
    
        private class Node {
            private int data;   // 数据
            private Node left;  // 左边
            private Node right; // 右边
    
            public Node(int data) {
                this.data = data;
            }
    
            public void addNode(int data) {
                if (data > this.data) {  // 大于根节点数放在右边
                    if (this.right == null) {  // 如果根节点没有节点,就实例化赋值给右边
                        this.right = new Node(data);
                    } else {
                        this.right.addNode(data); // 如果存在右节点,一直递归到没有节点
                    }
                } else {
                    if (this.left == null) {
                        this.left = new Node(data);
                    } else {
                        this.left.addNode(data);
                    }
                }
            }
    
            // 打印节点
            //中序打印(左根右)
            public void printCenterNode() {
                // 如果左节点存在,递归到不存在
                if (this.left != null) {
                    this.left.printCenterNode();
                }
    
                System.out.print(this.data + "=>");
    
                // 如果右节点存在,递归到不存在
                if (this.right != null) {
                    this.right.printCenterNode();
                }
            }
    
            // 前序打印(根左右)
            public void printBeforeNode() {
    
                System.out.print(this.data + "=>");
    
                // 如果左节点存在,递归到不存在
                if (this.left != null) {
                    this.left.printCenterNode();
                }
    
    
                // 如果右节点存在,递归到不存在
                if (this.right != null) {
                    this.right.printCenterNode();
                }
            }
    
            // 后续遍历 (左右根)
            public void printAfterNode() {
    
                // 如果左节点存在,递归到不存在
                if (this.left != null) {
                    this.left.printCenterNode();
                }
    
    
                // 如果右节点存在,递归到不存在
                if (this.right != null) {
                    this.right.printCenterNode();
                }
    
                System.out.print(this.data + "=>");
    
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:java(十三) 简单二叉树实现

          本文链接:https://www.haomeiwen.com/subject/rydbextx.html