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] + "");
}
}
最后
以上就是怕黑外套最近收集整理的关于算法和数据结构——顺序二叉树的遍历的全部内容,更多相关算法和数据结构——顺序二叉树内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复