【❤️算法系列之顺序二叉树的实现(前序遍历、中序遍历、后序遍历)❤️】
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【❤️算法系列之顺序二叉树的实现(前序遍历、中序遍历、后序遍历)❤️】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                - 1.何為順序二叉樹
 - 2.順序二叉樹的特點
 - 3.順序二叉樹的遍歷
 - 3.1.前序遍歷
 - 3.2.中序遍歷
 - 3.3.后序遍歷
 
- 4.順序二叉樹的注意點
 
1.何為順序二叉樹
順序二叉樹本質上維護了一個數組,也就是通過數組存儲實現的,適用于完全二叉樹
 
2.順序二叉樹的特點
💫(1)順序二叉樹通常只考慮完全二叉樹
 💫(2)第n個元素的左子節點為 2 * n + 1
 💫(3)第n個元素的右子節點為 2 * n + 2
 💫(4)第n個元素的父節點為 (n - 1) / 2
💮n為數組中元素的下標
3.順序二叉樹的遍歷
3.1.前序遍歷
protected void preOrder(int n) {if (arr == null || arr.length == 0) {System.out.println("數組為空,無法遍歷!");}if (n > arr.length - 1) {return;}System.out.print(arr[n]+"->");preOrder(2 * n + 1);preOrder(2 * n + 2);}3.2.中序遍歷
/*** 中序遍歷* @param n 0*/protected void infixOrder(int n) {if (arr == null || arr.length == 0) {System.out.println("數組為空,無法遍歷!");}if (n > arr.length - 1) {return;}preOrder(2 * n + 1);System.out.println(arr[n] + "->");preOrder(2 * n + 2);}3.3.后序遍歷
/*** 后序遍歷* @param n 0*/public void sufOrder(int n) {if (arr == null || arr.length == 0) {System.out.println("數組為空,無法遍歷!");}if (n > arr.length - 1) {return;}preOrder(2 * n + 1);preOrder(2 * n + 2);System.out.println(arr[n] + "->");}全代碼
/*** 順序存儲二叉樹 維護了一個數組* [1,2,3,4,5,6,7],以二叉樹得形式進行遍歷* 左節點:2 * n + 1* 右節點:2 * n + 2* n為根元素得數組下標*/ public class SeqBinaryTree {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5, 6, 7};System.out.println("前序遍歷結果如下:");ArrBinaryTree binaryTree = new ArrBinaryTree(arr);binaryTree.preOrder(0);System.out.println();System.out.println("中序遍歷結果如下:");binaryTree.infixOrder(0);System.out.println();System.out.println("后續遍歷結果如下:");binaryTree.sufOrder(0);}} class ArrBinaryTree {private int[] arr;public ArrBinaryTree(int[] arr) {this.arr = arr;}/*** 前序遍歷** @param n 0*/protected void preOrder(int n) {if (arr == null || arr.length == 0) {System.out.println("數組為空,無法遍歷!");}if (n > arr.length - 1) {return;}System.out.print(arr[n]+"->");preOrder(2 * n + 1);preOrder(2 * n + 2);}/*** 中序遍歷* @param n 0*/protected void infixOrder(int n) {if (arr == null || arr.length == 0) {System.out.println("數組為空,無法遍歷!");}if (n > arr.length - 1) {return;}preOrder(2 * n + 1);System.out.println(arr[n] + "->");preOrder(2 * n + 2);}/*** 后序遍歷* @param n 0*/public void sufOrder(int n) {if (arr == null || arr.length == 0) {System.out.println("數組為空,無法遍歷!");}if (n > arr.length - 1) {return;}preOrder(2 * n + 1);preOrder(2 * n + 2);System.out.println(arr[n] + "->");} }4.順序二叉樹的注意點
💙1.對于完全二叉樹,使用數組來實現節省空間,對于其他類型的二叉樹就不適用了。
 💙2.對于順序二叉樹底層維護了一個數組,這個數組需要提前確定大小,所以增刪節點會很麻煩.
總結
以上是生活随笔為你收集整理的【❤️算法系列之顺序二叉树的实现(前序遍历、中序遍历、后序遍历)❤️】的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【❤️算法系列之二叉树的实现(包含前序、
 - 下一篇: 【算法系列之线索化二叉树,前序线索化、中