成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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,

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

代碼案例

  1. package com.xie.tree; 
  2.  
  3. /** 
  4.  * @author: xiexiaofei 
  5.  * @date: 2020-02-09 20:04 
  6.  * @description: 
  7.  */ 
  8. public class ArrBinaryTreeDemo { 
  9.     public static void main(String[] args) { 
  10.         int[] arr = {1, 2, 3, 4, 5, 6, 7}; 
  11.         ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr); 
  12.         System.out.println("順序存儲二叉樹的前序遍歷數組"); 
  13.         arrBinaryTree.preOrder(0); 
  14.         System.out.println(); 
  15.         System.out.println("順序存儲二叉樹的中序遍歷數組"); 
  16.         arrBinaryTree.infixOrder(0); 
  17.         System.out.println(); 
  18.         System.out.println("順序存儲二叉樹的后序遍歷數組"); 
  19.         arrBinaryTree.postOrder(0); 
  20.         System.out.println(); 
  21.  
  22.         /** 
  23.          * 順序存儲二叉樹的前序遍歷數組 
  24.          * 1 2 4 5 3 6 7 
  25.          * 順序存儲二叉樹的中序遍歷數組 
  26.          * 2 4 5 1 3 6 7 
  27.          * 順序存儲二叉樹的后序遍歷數組 
  28.          * 2 4 5 3 6 7 1 
  29.          */ 
  30.  
  31.     } 
  32.  
  33. //實現順序存儲二叉樹遍歷 
  34. class ArrBinaryTree { 
  35.     private int[] arr;//存儲數據節點的數組 
  36.  
  37.     public ArrBinaryTree(int[] arr) { 
  38.         this.arr = arr; 
  39.     } 
  40.  
  41.     /** 
  42.      * 編寫一個方法,完成順序存儲二叉樹的前序遍歷。 
  43.      * 
  44.      * @param index 數組的下標 
  45.      */ 
  46.     public void preOrder(int index) { 
  47.         if (arr == null || arr.length == 0) { 
  48.             System.out.println("數組為空,不能按照二叉樹的前序遍歷"); 
  49.         } 
  50.         //輸出當前的元素 
  51.         System.out.print(arr[index] + " "); 
  52.         //向左遞歸遍歷 
  53.         if ((2 * index + 1) < arr.length) { 
  54.             preOrder(2 * index + 1); 
  55.         } 
  56.         //向右遞歸 
  57.         if ((2 * index + 2) < arr.length) { 
  58.             preOrder(2 * index + 2); 
  59.         } 
  60.     } 
  61.  
  62.     /** 
  63.      * 編寫一個方法,完成順序存儲二叉樹的中序遍歷。 
  64.      * 
  65.      * @param index 
  66.      */ 
  67.     public void infixOrder(int index) { 
  68.         if (arr == null || arr.length == 0) { 
  69.             System.out.println("數組為空,不能按照二叉樹的前序遍歷"); 
  70.         } 
  71.  
  72.         //向左遞歸遍歷 
  73.         if ((2 * index + 1) < arr.length) { 
  74.             preOrder(2 * index + 1); 
  75.         } 
  76.  
  77.         //輸出當前的元素 
  78.         System.out.print(arr[index] + " "); 
  79.  
  80.         //向右遞歸 
  81.         if ((2 * index + 2) < arr.length) { 
  82.             preOrder(2 * index + 2); 
  83.         } 
  84.  
  85.     } 
  86.  
  87.     /** 
  88.      * 編寫一個方法,完成順序存儲二叉樹的后序遍歷。 
  89.      * 
  90.      * @param index 
  91.      */ 
  92.     public void postOrder(int index) { 
  93.         if (arr == null || arr.length == 0) { 
  94.             System.out.println("數組為空,不能按照二叉樹的前序遍歷"); 
  95.         } 
  96.  
  97.         //向左遞歸遍歷 
  98.         if ((2 * index + 1) < arr.length) { 
  99.             preOrder(2 * index + 1); 
  100.         } 
  101.  
  102.         //向右遞歸 
  103.         if ((2 * index + 2) < arr.length) { 
  104.             preOrder(2 * index + 2); 
  105.         } 
  106.  
  107.         //輸出當前的元素 
  108.         System.out.print(arr[index] + " "); 
  109.  
  110.     } 
  111.  

 【編輯推薦】

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-04-01 10:34:18

Java編程數據結構算法

2021-03-22 09:00:22

Java數據結構算法

2021-03-29 10:13:47

Java編程數據結構算法

2020-11-02 09:15:47

算法與數據結構

2021-03-18 08:44:20

Java數據結構算法

2020-09-23 18:25:40

算法二叉樹多叉樹

2021-04-20 08:37:14

數據結構二叉樹

2021-04-19 07:47:42

數據結構二叉樹Tree

2021-04-07 09:26:37

Java數據結構算法

2021-04-28 20:12:27

數據結構創建

2021-03-24 10:41:04

Java數據結構算法

2021-03-09 06:30:32

JAVA數據結構算法

2021-04-13 09:37:41

Java數據結構算法

2021-05-12 09:07:09

Java數據結構算法

2013-01-30 10:34:02

數據結構

2021-04-23 09:12:09

Java數據結構算法

2023-04-06 07:39:48

2021-03-08 06:28:57

JAVA數據結構與算法稀疏數組

2021-03-10 08:42:19

Java數據結構算法

2021-03-17 09:27:36

Java數據結構算法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区在线视频 | 国产精品一区二区三区四区 | 日本高清不卡视频 | 久久久高清 | 国产一区二区三区在线免费观看 | 国产黄色av网站 | 超碰av免费 | 91亚洲欧美 | 精品久久久久国产 | 人人草人人干 | 亚洲午夜一区二区 | 人人爽人人草 | 在线第一页 | 久久草在线视频 | 日韩精品一区在线 | 综合色久 | 欧美福利 | 午夜精品在线观看 | 一区二区日韩精品 | 国产精品久久国产精品 | 久久精彩视频 | 一区二区成人 | 日本高清不卡视频 | 99成人在线视频 | 日日夜夜精品免费视频 | 亚洲精品在线观 | 国产99久久久久 | 日韩视频一区二区在线 | 91精品国产91 | 精品毛片 | 99re热这里只有精品视频 | 日韩精品一区二区三区第95 | 久久久精 | 人人澡视频 | 蜜桃臀av一区二区三区 | 久久精品色欧美aⅴ一区二区 | 国产成人久久精品一区二区三区 | 亚洲精品区| 精品久久九九 | 国产一区黄色 | 午夜欧美一区二区三区在线播放 |