• 排序二叉树的基本操作


    描述

    二叉树的构建、插入新的结点、树的先中后序以及层序四种遍历

    代码

    import java.util.LinkedList;
    import java.util.Queue;
    
    class Node{
        public int data;
        public Node left;
        public Node right;
        public Node(int data){
            this.data=data;
            this.left=null;
            this.right=null;
        }
    }
    
    public class BinaryTree {
        private Node root;
        public BinaryTree(){
            root=null;
        }
        /*
        * 插入到排序二叉树
        * */
        public void insert(int data){
            Node newNode=new Node(data);
            if(root==null){
                root=newNode;
                return;
            }
            Node node=root;
            Node parent;
            while(true){
                parent=node;
                if(data<node.data){
                    node=node.left;
                    if(node==null){
                        parent.left=newNode;
                        return;
                    }
                }else{
                    node=node.right;
                    if(node==null){
                        parent.right=newNode;
                        return;
                    }
                }
            }
        }
        /*
        * 将数值输入构建二叉树
        * */
        public void buildTree(int[] data){
            for(int i=0;i<data.length;i++){
                insert(data[i]);
            }
        }
        /*
        * 先序遍历
        * */
        public void preOrder(){
            preOrder(root);
        }
        public void preOrder(Node node){
            if(node==null) return;
            System.out.print(node.data+" ");
            preOrder(node.left);
            preOrder(node.right);
        }
    
        /*
        * 中序遍历
        * */
        public void inOrder(){
            inOrder(root);
        }
        public void inOrder(Node node){
            if(node==null) return;
            inOrder(node.left);
            System.out.print(node.data+" ");
            inOrder(node.right);
        }
    
        /*
        * 后序遍历
        * */
        public void postOrder(){
            postOrder(root);
        }
        public void postOrder(Node node){
            if(node==null) return;
            postOrder(node.left);
            postOrder(node.right);
            System.out.print(node.data+" ");
        }
        /*
        * 层序遍历
        * */
        public void layerTranverse(){
            Node node = root;
            Queue<Node> queque=new LinkedList<Node>();
            queque.add(root);
            while(!queque.isEmpty()){
                node=queque.poll();
                System.out.print(node.data+" ");
                if(node.left!=null) queque.add(node.left);
                if(node.right!=null) queque.add(node.right);
            }
        }
    
        public static void main(String[] args) {
            BinaryTree bitree=new BinaryTree();
            int[] data={2,8,7,4,9,3,1,6,7,5};
            bitree.buildTree(data);
            System.out.print("二叉树的先序遍历:");
            bitree.preOrder();
            System.out.println();
            System.out.print("二叉树的中序遍历:");
            bitree.inOrder();
            System.out.println();
            System.out.print("二叉树的后序遍历:");
            bitree.postOrder();
            System.out.println();
            System.out.print("二叉树的层序遍历:");
            bitree.layerTranverse();
            System.out.println();
        }
    }
  • 相关阅读:
    jquery之实例应用
    jquery之文档操作
    jquery之css操作
    jquery属性的操作
    jquery筛选器
    jquery选择器之表单选择表单对象属性
    jquery选择器之属性选择器
    jquery选择器之子元素
    数位dp基础
    Leetcode 5195. 最长快乐字符串(贪心)
  • 原文地址:https://www.cnblogs.com/zadomn0920/p/6361730.html
Copyright © 2020-2023  润新知