概述
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] + ""); } }
最后
以上就是怕黑外套为你收集整理的算法和数据结构——顺序二叉树的遍历的全部内容,希望文章能够帮你解决算法和数据结构——顺序二叉树的遍历所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复