特点:
1.只考虑完全二叉树
2.第n个的左节点为2*n+1
3.第n个的右节点为2*n+2
4.第n个的父节点为(n-1)/2
n为第几个元素
public class ArrBinaryTreeDemo { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr); arrBinaryTree.preOrder(); System.out.println(); arrBinaryTree.infixOrder(); System.out.println(); arrBinaryTree.postOrder(); } } class ArrBinaryTree { private int[] arr;//存储数据节点的数组 public ArrBinaryTree(int[] arr) { this.arr = arr; } public void preOrder(){ this.preOrder(0); } public void infixOrder(){ this.infixOrder(0); } public void postOrder(){ this.postOrder(0); } /** * @param index 数组下标 */ public void preOrder(int index) { if (arr == null || arr.length == 0) { System.out.println("数组为空"); } System.out.print(arr[index]); //向左递归 if (index * 2 + 1 < arr.length) { preOrder(2 * index + 1); } //向右递归 if (index * 2 + 2 < arr.length) { preOrder(2 * index + 2); } } public void infixOrder(int index) { if (arr == null || arr.length == 0) { System.out.println("数组为空"); } //向左递归 if (index * 2 + 1 < arr.length) { infixOrder(2 * index + 1); } System.out.print(arr[index]); //向右递归 if (index * 2 + 2 < arr.length) { infixOrder(2 * index + 2); } } public void postOrder(int index) { if (arr == null || arr.length == 0) { System.out.println("数组为空"); } //向左递归 if (index * 2 + 1 < arr.length) { postOrder(2 * index + 1); } //向右递归 if (index * 2 + 2 < arr.length) { postOrder(2 * index + 2); } System.out.print(arr[index]); } }
原文:https://www.cnblogs.com/bingbug/p/12286757.html