树结构入门总结贴

package com.example.binarytreedemo;
import java.util.Arrays;
/**
* @Author: zhangQi
* @Date: 2020-08-11 17:22
* @Description
* 完全二叉树的线性存储
*/
public class FullBinaryTree {
private Object[] arr;
private int size;
//gouzaoqi Construct initialize the parameters
FullBinaryTree(int capacity){
this.arr = new Object[capacity+1];
this.size = 0;
}
public int getSize(){
return this.size;
}
public boolean isEmpty(){
return this.size == 0;
}
public void add(Object e,int index){
assert index <= this.arr.length;
this.arr[index] = e;
this.size ++;
}
@Override
public String toString(){
return "FullBinaryTree{" +
"arr=" + Arrays.toString(arr) +
", size=" + size +
'}';
}
public static void main(String[] args) {
FullBinaryTree fullBinaryTree = new FullBinaryTree(26);
//存入26个字母 从下标1开始
for (Character c = 'A';c<='Z';c++){
fullBinaryTree.add(c,c-'A'+1);
}
System.out.println(fullBinaryTree.toString());
}
}
输出
FullBinaryTree{arr=[null, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], size=26}

package com.example.binarytreedemo;
import java.util.ArrayList;
/**
* @Author: zhangQi
* @Date: 2020-08-11 17:31
* @De
* 完全二叉树的创建与遍历
*/
public class BinaryTree {
//结点
private Node root;
//结点数
private int size;
//存放结点
private ArrayList<Node> list;
public BinaryTree(){
this.root = null;
this.size = 0;
this.list = new ArrayList<>();
}
public void createTree(Object[] array){
for (int i=0;i<array.length;i++){
Node node = new Node(array[i]);
list.add(node);
if(this.root==null){
this.root = node;
}
}
if(list.size()>0){
//分布到两处结点上 属于一个父结点 ?
for(int i=0;i<array.length/2;i++){
if(2*i+1<list.size()){
list.get(i).left=list.get(2*i+1);
}
if(2*i+2<list.size()){
list.get(i).right=list.get(2*i+2);
}
}
}
}
//前序遍历
public void preOrder(Node root){
if(root==null){
return;
}else{
System.out.print(root.getData()+" ");
}
preOrder(root.left);
preOrder(root.right);
}
public Node getRoot(){
return root;
}
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
Character[] array = {'A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
binaryTree.createTree(array);
binaryTree.preOrder(binaryTree.getRoot());
}
}
输出
A B D H P Q I R S E J T U K V W C F L X Y M Z G N O

本文来自博客园,作者:ukyo--碳水化合物,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/13477235.html

浙公网安备 33010602011771号