• Java数据结构和算法(三)顺序存储的树结构


    Java数据结构和算法(三)顺序存储的树结构

    二叉树也可以用数组存储,可以和完全二叉树的节点一一对应。

    完全二叉树

    一、树的遍历

    // 二叉树保存在数组中
    int[] data;
    
    public void preOrder() {
        preOrder(0);
    }
    
    // 前序遍历指定的节点
    public void preOrder(int index) {
        System.out.printf(data[index] + " ");
        int leftIndex = 2 * index + 1;
        int rightIndex = 2 * index + 2;
    
        // 左子树
        if (leftIndex < data.length) {
            preOrder(leftIndex);
        }
        // 右子树
        if (rightIndex < data.length) {
            preOrder(rightIndex);
        }
    }
    

    二、堆排序

    椎排序是选择排序中的一种,也是找出最大的一个数再进行交换位置。椎仅为大椎和小椎,所谓大椎就是树的所有父节点的值都比子节点大的树。

    public void heapSort(int[] arr) {
        // 找到最大的非叶子节点
        int start = (arr.length - 1) / 2;
        for (int i = start; i >= 0; i--) {
            maxHeap(arr, arr.length, i);
        }
        for (int i = arr.length - 1; i > 0; i--) {
            int tmp = arr[i];
            arr[i] = arr[0];
            arr[0] = tmp;
            maxHeap(arr, i, 0);
        }
    }
    
    // 转换指定索引位为大顶堆,大顶椎的第一个节点一定是数组中的最大值
    public void maxHeap(int[] arr, int size, int index) {
        int leftIndex = 2 * index + 1;
        int rightIndex = 2 * index + 2;
        int maxIndex = index;
    
        if (leftIndex < size && arr[leftIndex] > arr[maxIndex]) {
            maxIndex = leftIndex;
        }
        if (rightIndex < size && arr[rightIndex] > arr[maxIndex]) {
            maxIndex = rightIndex;
        }
    
        if (maxIndex != index) {
            int tmp = arr[index];
            arr[index] = arr[maxIndex];
            arr[maxIndex] = tmp;
            maxHeap(arr, size, maxIndex);
        }
    }
    

    每天用心记录一点点。内容也许不重要,但习惯很重要!

  • 相关阅读:
    C# 对Outlook2010进行二次开发
    利用AForge.NET 调用电脑摄像头进行拍照
    SQL2012 提示评估已过期 解决方案- sql server问题
    图片转换PDF
    [转载]理解weight decay
    ATTENTION NETWORK分析
    sys.stdout.write和print和sys.stdout.flush
    Flutter免费(视频)教程汇总
    Windows核心编程随笔
    .NET家族
  • 原文地址:https://www.cnblogs.com/binarylei/p/10100273.html
Copyright © 2020-2023  润新知