基于JAVA实现的二叉树

天下武功千奇百怪,武林高手神仙打架之时,以不变应万变,唯有内功深厚,方可傲视群雄

 private static BinaryTreeNode createBinaryTree(Integer[] srcArr) {
        BinaryTreeNode binaryTreeNode = new BinaryTreeNode();
        for(int x=0;x<srcArr.length;x++){
            findBiggerNode(binaryTreeNode,srcArr[x]);
        }
        return binaryTreeNode;
    }

    private static void findBiggerNode(BinaryTreeNode tree,Integer x){
        if(tree.getNode()==null){//根节点为空
            tree.setNode(x);
            return;
        }
         //根节点不为空
        if(tree.getNode()>x){//根节点大于目标数
            if(tree.getLeftNode()==null){//左子树为空
                tree.setLeftNode(new BinaryTreeNode(x));//设置左子树
            }else{//左子树不为空 递归查找
                findBiggerNode(tree.getLeftNode(),x);
            }
        }else{//目标大于等于 根节点
           if(tree.getRightNode()==null){//右子树为空 设置右子树
               tree.setRightNode(new BinaryTreeNode(x));
           }else{//右子树不为空 递归查找
               findBiggerNode(tree.getRightNode(),x);
           }
        }
    }

    public static Integer[] createArray(int length){
        Integer[] arr=new Integer[length];
         for(int x=0;x<length;x++)
            arr[x]=(int)(Math.random()*1000);
         return arr;
    }

    public static void main(String[] args) {
        Integer[] arr=createArray(10);
        System.out.println("原始数组");
        System.out.println(Arrays.asList(arr));
        System.out.println("=============");

        System.out.println("开始生成二叉树");

        BinaryTreeNode binaryTree = createBinaryTree(arr);
        System.out.println(binaryTree.toString());
    }

}

//定义根节点
class BinaryTreeNode{
    private Integer node;
    private BinaryTreeNode  leftNode;//左子树
    private BinaryTreeNode  rightNode;//右子树

    public BinaryTreeNode(){}
    public BinaryTreeNode(Integer selfNode){
        this.node=selfNode;
    }
    //初始化构建
    public BinaryTreeNode(Integer selfNode,BinaryTreeNode leftNode,BinaryTreeNode rightNode){
            this.node=selfNode;
            this.leftNode=leftNode;
            this.rightNode=rightNode;
    }

    public Integer getNode() {
        return node;
    }
    public void setNode(Integer node) {
        this.node = node;
    }
    public BinaryTreeNode getLeftNode() {
        return leftNode;
    }

    public void setLeftNode(BinaryTreeNode leftNode) {
        this.leftNode = leftNode;
    }

    public BinaryTreeNode getRightNode() {
        return rightNode;
    }

    public void setRightNode(BinaryTreeNode rightNode) {
        this.rightNode = rightNode;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于武林来说“传承”很重要。如果武林高手短命,不能把绝世武功传给后人,武林自身就会衰落。一门武功的损失看起来似乎很...
    超甜吖阅读 4,231评论 2 6
  • 今天笔者很高兴和大家一起再聊聊金庸先生的武侠作品,前面我粗浅的分析了一些金庸作品里头个性相对鲜明,给笔者留下来深刻...
    易郁生阅读 5,870评论 0 3
  • 华佗原本读书想考取功名作官。但生逢乱世。在乱哄哄,你方唱罢我登场的统治集团,只要站错队,稍微有慎,就有掉脑袋的可能...
    游泳的鱼_53a1阅读 2,241评论 1 2
  • 使用全局插件的时候通过Vue.use(),他需要再调用new Vue()启动应用之前完成 如下 是用插件的时候还可...
    尼莫nemo阅读 3,604评论 0 0
  • 中华乃礼仪之邦,有着上下五千年的文化底蕴,自古以来就流传着百善孝为先的传统,可为何现如今却频频出现少年弑母案件,现...
    难得世间游阅读 2,454评论 2 1