10-顺序二叉树-Scala实现

Posted help-silence

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10-顺序二叉树-Scala实现相关的知识,希望对你有一定的参考价值。

用树的结构遍历数组

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))
  }
}

  

以上是关于10-顺序二叉树-Scala实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(12)---二叉树之顺序结构

数据结构中二叉树的顺序存储结构代码怎么编写?

算法与数据结构二叉树的顺序存储代码

数据结构初阶第六篇——初识二叉树(二叉树的基本性质+二叉树的顺序存储结构及实现)

数据结构 二叉树

二叉树的前序中序后序层次遍历的原理及C++代码实现