本篇內容主要講解“什么是Java順序二叉樹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“什么是Java順序二叉樹”吧!
從數據存儲來看,數組存儲方式和樹的存儲方式可以相互轉換,即數組可以轉換成樹,樹可以轉換成數組。如下圖所示:
順序存儲二叉樹的特點:
順序存儲通常只考慮完全二叉樹;
第n個元素的左子節點為 2 * n+1;
第n個元素的右子節點為 2 * n+2;
第n個元素的父節點為 (n-1)/2;
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順序二叉樹”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。