수조 실현 순서 두 갈래 트리의 앞 순서, 중간 순서, 뒤 순서
9286 단어 데이터 구조와 알고리즘
2. n번째 원소의 왼쪽 트리는 2*n+1이다.
3. n번째 원소의 오른쪽 나무는 2*n+2이다.
4. n자 나무의 부모 노드는 (n-1)/2이다.
주의: n은 수조로 표시되기 때문에 0부터 시작합니다.
코드 구현:
package com.yg.tree;/*
@author Mu_Mu
@date 2020/3/4 10:50
*/
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(0);
// arrBinaryTree.infixOrder(0);
arrBinaryTree.postOrder(0);
}
}
class ArrBinaryTree {
private int[] arr;
public ArrBinaryTree(int[] arr) {
this.arr = arr;
}
//
/*
* @param index :
* @return : void
* @date : 2020/3/4 10:53
*/
public void preOrder(int index) {
if (arr == null && arr.length == 0) {
System.out.println(" ");
return;
}
System.out.println(arr[index]);
if ((index * 2 + 1) < arr.length) {
preOrder(index * 2 + 1);
}
if ((index * 2 + 2) < arr.length) {
preOrder(index * 2 + 2);
}
}
//
public void infixOrder(int index) {
if (arr == null && arr.length == 0) {
System.out.println(" ");
return;
}
// (index*2+1)
if ((index * 2 + 1) < arr.length) {
infixOrder(index * 2 + 1);
}
if (index < arr.length) {
System.out.print(arr[index] + "\t");
}
if ((index * 2 + 2) < arr.length) {
infixOrder(index * 2 + 2);
}
}
//
public void postOrder(int index) {
if (arr == null && arr.length == 0) {
System.out.println(" ");
return;
}
if ((index * 2 + 1) < arr.length) {
postOrder(index * 2 + 1);
}
if ((index * 2 + 2) < arr.length) {
postOrder(index * 2 + 2);
}
if (index < arr.length) {
System.out.println(arr[index]+"\t");
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무의 깊이가 두루 다니다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.