• 顺序存储二叉树


    package com.dai.tree;
    
    public class ArrBinaryTreeDemo {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] arr = {1,2,3,4,5,6,7};
            //创建一个arrbinarytree对象
            ArrBinarTree arrBinarTree = new ArrBinarTree(arr);
            System.err.println("前序遍历:");
            arrBinarTree.preOrder();
            System.out.println("中序遍历:");
            arrBinarTree.infixOrder();
            System.out.println("后续遍历:");
            arrBinarTree.postOrder();
        }
    }
    //写一个arrbianrytree,实现顺序存储二叉树的遍历
    class ArrBinarTree {
        private int[] arr; //存储数据节点的数组
    
        public ArrBinarTree(int[] arr) {
            this.arr = arr;
        }
        
        //重载preOrder
        public void preOrder() {
            this.preOrder(0);
        }
        public void infixOrder() {
            this.infixOrder(0);
        }
        public void postOrder() {
            this.postOrder(0);
        }
        //编写一个方法,完成顺序存储二叉树的一个前序遍历
        //index表示数组的下标
        public void preOrder(int index) {
            //如果数组未空,或者arr.length=0
            if(arr ==null || arr.length == 0) {
                System.out.println("数组为空,不能按照二叉树的前序遍历");
            }
            //输出当前元素
            System.out.println(arr[index]);
            //向前递归遍历
            if((index*2+1) < arr.length) {
                preOrder(2*index + 1);
            }
            //向右递归遍历
            if(index*2+2 < arr.length) {
                preOrder(2*index+2);
            }
        }
        //编写一个方法,完成顺序存储二叉树的一个中序遍历
        public void infixOrder(int index) {
            if(arr == null || arr.length == 0) {
                System.out.println("数组为空,不能遍历");
            }
            if((index*2+1) < arr.length) {
                infixOrder(2*index+1);
            }
            System.out.println(arr[index]);
            
            if((index*2+2) < arr.length) {
                infixOrder(index*2 +2);
            }
        }
        //编写一个方法,完成顺序存储二叉树的一个中序遍历
        public void postOrder(int index) {
            if(arr == null || arr.length == 0) {
                System.out.println("数组为空,不能遍历");
            }
            if((index*2+1)<arr.length) {
                postOrder(index*2+1);
            }
            if((index*2+2) < arr.length) {
                postOrder(index*2 + 2);
            }
            System.out.println(arr[index]);
        }
        
    }
  • 相关阅读:
    第二次结对编程作业
    5 线性回归算法
    4 K均值算法--应用
    3 K均值算法
    2 机器学习相关数学基础
    1 机器学习概述
    15. 语法制导的语义翻译
    14.算符优先分析
    13.自下而上语法分析
    12.实验二 递归下降语法分析
  • 原文地址:https://www.cnblogs.com/shengtudai/p/14454506.html
Copyright © 2020-2023  润新知