温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是Java顺序二叉树

发布时间:2021-06-18 09:45:20 来源:亿速云 阅读:145 作者:chen 栏目:编程语言

本篇内容主要讲解“什么是Java顺序二叉树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Java顺序二叉树”吧!

 基本概念

从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树可以转换成数组。如下图所示:

什么是Java顺序二叉树

顺序存储二叉树的特点:

  1. 顺序存储通常只考虑完全二叉树;

  2. 第n个元素的左子节点为 2 * n+1;

  3. 第n个元素的右子节点为 2 * n+2;

  4. 第n个元素的父节点为 (n-1)/2;

  5. n 表示二叉树中的第几个元素(按0开始编号如上图所示);

需求

要求给定一个数组{1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历,前序遍历的结果应当为1,2,4,5,3,6,7,

附加完成中序遍历和后序遍历。

代码案例

package com.xie.tree;  /**  * @author: xiexiaofei  * @date: 2020-02-09 20:04  * @description:  */ public class ArrBinaryTreeDemo {     public static void main(String[] args) {         int[] arr = {1, 2, 3, 4, 5, 6, 7};         ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr);         System.out.println("顺序存储二叉树的前序遍历数组");         arrBinaryTree.preOrder(0);         System.out.println();         System.out.println("顺序存储二叉树的中序遍历数组");         arrBinaryTree.infixOrder(0);         System.out.println();         System.out.println("顺序存储二叉树的后序遍历数组");         arrBinaryTree.postOrder(0);         System.out.println();          /**          * 顺序存储二叉树的前序遍历数组          * 1 2 4 5 3 6 7          * 顺序存储二叉树的中序遍历数组          * 2 4 5 1 3 6 7          * 顺序存储二叉树的后序遍历数组          * 2 4 5 3 6 7 1          */      } }  //实现顺序存储二叉树遍历 class ArrBinaryTree {     private int[] arr;//存储数据节点的数组      public ArrBinaryTree(int[] arr) {         this.arr = arr;     }      /**      * 编写一个方法,完成顺序存储二叉树的前序遍历。      *      * @param index 数组的下标      */     public void preOrder(int index) {         if (arr == null || arr.length == 0) {             System.out.println("数组为空,不能按照二叉树的前序遍历");         }         //输出当前的元素         System.out.print(arr[index] + " ");         //向左递归遍历         if ((2 * index + 1) < arr.length) {             preOrder(2 * index + 1);         }         //向右递归         if ((2 * index + 2) < arr.length) {             preOrder(2 * index + 2);         }     }      /**      * 编写一个方法,完成顺序存储二叉树的中序遍历。      *      * @param index      */     public void infixOrder(int index) {         if (arr == null || arr.length == 0) {             System.out.println("数组为空,不能按照二叉树的前序遍历");         }          //向左递归遍历         if ((2 * index + 1) < arr.length) {             preOrder(2 * index + 1);         }          //输出当前的元素         System.out.print(arr[index] + " ");          //向右递归         if ((2 * index + 2) < arr.length) {             preOrder(2 * index + 2);         }      }      /**      * 编写一个方法,完成顺序存储二叉树的后序遍历。      *      * @param index      */     public void postOrder(int index) {         if (arr == null || arr.length == 0) {             System.out.println("数组为空,不能按照二叉树的前序遍历");         }          //向左递归遍历         if ((2 * index + 1) < arr.length) {             preOrder(2 * index + 1);         }          //向右递归         if ((2 * index + 2) < arr.length) {             preOrder(2 * index + 2);         }          //输出当前的元素         System.out.print(arr[index] + " ");      }  }

到此,相信大家对“什么是Java顺序二叉树”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI