10-順序二叉樹-Scala實現
阿新 • • 發佈:2020-07-13
用樹的結構遍歷陣列
package com.atguigu.datastructures.binarytree object ArrayTreeDemo { def main(args: Array[String]): Unit = { val arr = Array(1,2,3,4,5,6,7) val arrayTree = new ArrayTree(arr) arrayTree.postOrder() } } class ArrayTree(val arr:Array[Int]){ //過載 def preOrder(): Unit ={ this.preOrder(0) } def infixOrder(): Unit ={ this.infixOrder(0) } def postOrder(): Unit ={ this.postOrder(0) } def preOrder(index:Int): Unit ={ if (arr == null || arr.length == 0){ println("陣列為空,不能按照二叉樹前序遍歷") } println(arr(index)) //向左遞迴遍歷 if ((index*2 + 1) < arr.length){ preOrder(index*2 + 1) } //向右遞迴遍歷 if ((index*2 + 2) < arr.length){ preOrder(index*2 + 2) } } def infixOrder(index:Int): Unit ={ if (arr == null || arr.length == 0){ println("陣列為空,不能按照二叉樹前序遍歷") } //向左遞迴遍歷 if ((index*2 + 1) < arr.length){ infixOrder(index*2 + 1) } println(arr(index)) //向右遞迴遍歷 if ((index*2 + 2) < arr.length){ infixOrder(index*2 + 2) } } def postOrder(index:Int): Unit ={ if (arr == null || arr.length == 0){ println("陣列為空,不能按照二叉樹前序遍歷") } //向左遞迴遍歷 if ((index*2 + 1) < arr.length){ postOrder(index*2 + 1) } //向右遞迴遍歷 if ((index*2 + 2) < arr.length){ postOrder(index*2 + 2) } println(arr(index)) } }