package com.structure.demo; import android.app.Activity; import android.os.Bundle; import android.util.Log; /** * 顺序存储的二叉树,只考虑完全二叉树。 * 第n个元素的左子节点是:2n+1; * 第n个元素的右子节点是:2n+2; * 第n个元素的父节点是:(n-1)/ 2; */ public class SortBinaryTreeActivity extends Activity { private int[] array = {1, 2, 3, 4, 5, 6, 7}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrBinaryTree arrBinaryTree = new ArrBinaryTree(array); arrBinaryTree.preOrder(); Log.i("tag","======中序遍历=========="); arrBinaryTree.midOrder(); Log.i("tag","=======后序遍历========="); arrBinaryTree.postOrder(); } } class ArrBinaryTree { private int[] arr; public ArrBinaryTree(int[] arr) { this.arr = arr; } public void preOrder(){ preOrder(0); } public void midOrder(){ midOrder(0); } public void postOrder(){ postOrder(0); } /** * 前序遍历 * @param index */ public void preOrder(int index) { if (arr == null || arr.length == 0) { Log.i("tag", "数组为空"); return; } Log.i("tag", 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 midOrder(int index) { if (arr == null || arr.length == 0) { Log.i("tag", "数组为空"); return; } if (2 * index + 1 < arr.length) { midOrder(2 * index + 1); } Log.i("tag", arr[index] + ""); if (2 * index + 2 < arr.length){ midOrder(2 * index + 2); } } /** * 后序遍历 * @param index */ public void postOrder(int index) { if (arr == null || arr.length == 0) { Log.i("tag", "数组为空"); return; } if (2 * index + 1 < arr.length) { postOrder(2 * index + 1); } if (2 * index + 2 < arr.length){ postOrder(2 * index + 2); } Log.i("tag", arr[index] + ""); } }
算法和数据结构——顺序二叉树的遍历
最新推荐文章于 2022-07-17 23:57:36 发布