zoukankan      html  css  js  c++  java
  • 二叉树

      1、二叉树三个节点构成,分别是根、左、右。

        如果需要进行二叉树遍历,则数据必须先排序(冒泡排序/快速排序/选择排序

        原则:左子树一定小于等于根,右子树一定大于根

        遍历方式:

          1、先序遍历:根左右

          2、中序遍历:左根右

          3、右序遍历/后序遍历:左右根

    节点代码:

    package cn.xiang.tree.binaryTree;
    
    public class NodeTreeDemo {
        int data;
        NodeTreeDemo left;
        NodeTreeDemo right;
    
        public NodeTreeDemo(){
        }
        
        public NodeTreeDemo(int data){
            this.data = data;
            left = null;
            right = null;
        }
        
        public void insert(NodeTreeDemo root,int data){
            /*if(root.data>data){
                if(root.left==null){
                    root.left = new NodeTreeDemo(data);
                }else{
                    this.insert(root.left, data);
                }
            }else{
                if(root.right==null){
                    root.right = new NodeTreeDemo(data);
                }else{
                    this.insert(root.right, data);
                }
            }*/
            if(data>root.data){ //如果插入的节点大于跟节点  
                if(root.right==null){          //如果右子树为空,就插入,如果不为空就再创建一个节点                                                           
                root.right=new NodeTreeDemo(data); //就把插入的节点放在右边  
                }else{  
                    this.insert(root.right, data);  
                }  
            }else{  //如果插入的节点小于根节点  
                if(root.left==null){ //如果左子树为空,就插入,如果不为空就再创建一个节点             
                    root.left=new NodeTreeDemo(data); //就把插入的节点放在左边边  
                }else{  
                    this.insert(root.left, data);  
                }  
            }  
            
        }
    
        @Override
        public String toString() {
            return "NodeTree [data=" + data + ", left=" + left + ", right=" + right + "]";
        } 
        
        
    }

    查询执行代码

    package cn.xiang.tree.binaryTree;
    
    public class NodeQueryDemo {
        public static void main(String[] args) {
            int[] array = {35,66,39,33,28,65,56,87};  
            NodeTreeDemo root = new NodeTreeDemo(array[0]);
            for (int i = 1; i < array.length; i++) {
                root.insert(root, array[i]);
            }
            System.out.println(root);
            System.out.println("先序遍历");
            preOrder(root);
            System.out.println("
     先序遍历");
            inOrder(root);
            System.out.println("
     后序遍历");
            postOrder(root);
        }
        
        //先序遍历
        public static void preOrder(NodeTreeDemo root){
            if(root!=null){
                System.out.print(root.data+"-");
                preOrder(root.left);
                preOrder(root.right);
            }
        }
        
        //中序遍历
            public static void inOrder(NodeTreeDemo root){
                if(root!=null){
                    inOrder(root.left);
                    System.out.print(root.data+"-");
                    inOrder(root.right);
                }
            }
            
            //后序遍历
            public static void postOrder(NodeTreeDemo root){
                if(root!=null){
                    postOrder(root.left);
                    postOrder(root.right);
                    System.out.print(root.data+"-");
                }
            }        
    }

     

     先序遍历:

        public static void preOrder(NodeTreeDemo root){
            if(root!=null){
                System.out.print(root.data+"-");
                preOrder(root.left);
                preOrder(root.right);
            }
        }

    //中序遍历
            public static void inOrder(NodeTreeDemo root){
                if(root!=null){
                    inOrder(root.left);
                    System.out.print(root.data+"-");
                    inOrder(root.right);
                }
            }

      

     

    //后序遍历
            public static void postOrder(NodeTreeDemo root){
                if(root!=null){
                    postOrder(root.left);
                    postOrder(root.right);
                    System.out.print(root.data+"-");
                }
            }    

  • 相关阅读:
    Nginx安装
    node.js搭建vue脚手架
    Oracle引入数据
    MVC引入Junit单元测试
    Git版本控制器
    IDEA-Maven
    SSM框架整合
    【测试基础第五篇】测试用例编写和评审
    【测试基础第四篇】测试用例设计方法
    【测试基础第三篇】需求测试分析
  • 原文地址:https://www.cnblogs.com/xiangyuqi/p/8615245.html
Copyright © 2011-2022 走看看