package com.example.demo;
import jdk.nashorn.internal.objects.annotations.Setter;
import java.util.*;
import java.util.stream.Stream;
public class BinaryTree {
private Node root ;
public Node getRoot() {
return root;
}
public void setRoot(Node root) {
this.root = root;
}
private class Node {
//左节点
private Node left;
//数据域
private int data;
//右节点
private Node right;
public Node(int data) {
this.data = data;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
}
private void buildTree(Node node, int data) {
if (root==null) {
root = new Node(data);
} else {
if (data < node.getData()) {
if (node.getLeft()==null) {
node.setLeft(new Node(data));
} else {
buildTree(node.getLeft(),data);
}
} else {
if (node.getRight() == null){
node.setRight(new Node(data));
} else {
buildTree(node.getRight(), data);
}
}
}
}
public BinaryTree creatBitryTree(int[] datas) {
BinaryTree binaryTree = new BinaryTree();
for (int data: datas) {
binaryTree.buildTree(binaryTree.getRoot(),data);
}
return binaryTree;
}
/**
* 前序
* @param node
*/
public void preTraversal(Node node) {
if (node!=null) {
System.out.println(node.getData());
preTraversal(node.getLeft());
preTraversal(node.getRight());
}
}
/**
* 广度便利
*/
public void levalBitrayTree(Node node) {
if (node==null) {
return;
}
Queue<Node> queue = new LinkedList<>();
queue.add(node);
while (!queue.isEmpty()) {
Node poll = queue.poll();
System.out.println(poll.getData());
if (poll.getLeft()!=null) {
queue.add(poll.getLeft());
}
if (poll.getRight()!=null) {
queue.add(poll.getRight());
}
}
}
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
BinaryTree binaryTree1 = binaryTree.creatBitryTree(new int[]{6, 3, 7, 4, 8, 5});
//binaryTree1.preTraversal(binaryTree1.getRoot());
binaryTree1.levalBitrayTree(binaryTree1.getRoot());
List<Integer> list = new ArrayList<>();
}
}