Untitled
unknown
plain_text
6 months ago
3.7 kB
2
Indexable
Never
package de.s3lection.teamspeak.chatgpt; import java.util.ArrayList; import java.util.List; public class BinaryIntTree { private Node root; public BinaryIntTree() { root = null; } public boolean insertValue(int value) { if (root == null) { root = new Node(value); return true; } return insertNode(root, value); } private boolean insertNode(Node node, int value) { if (value == node.value) { return false; } if (value < node.value) { if (node.leftChild == null) { node.leftChild = new Node(value); return true; } else { return insertNode(node.leftChild, value); } } else { if (node.rightChild == null) { node.rightChild = new Node(value); return true; } else { return insertNode(node.rightChild, value); } } } public boolean containsValue(int value) { return searchValue(root, value); } private boolean searchValue(Node node, int value) { if (node == null) { return false; } if (value == node.value) { return true; } else if (value < node.value) { return searchValue(node.leftChild, value); } else { return searchValue(node.rightChild, value); } } public int getNodeCount() { return getNodeCount(root); } private int getNodeCount(Node node) { if (node == null) { return 0; } return 1 + getNodeCount(node.leftChild) + getNodeCount(node.rightChild); } public int[] toIntArray() { List<Integer> list = new ArrayList<>(); inOrderTraversal(root, list); int[] result = new int[list.size()]; for (int i = 0; i < list.size(); i++) { result[i] = list.get(i); } return result; } private void inOrderTraversal(Node node, List<Integer> list) { if (node == null) { return; } inOrderTraversal(node.leftChild, list); list.add(node.value); inOrderTraversal(node.rightChild, list); } public boolean isPerfect(){ int treeHeight = getHeight(root); return isPerfect(root, 0, treeHeight); } private boolean isPerfect(Node node, int level, int treeHeight){ if(node == null) return true; if(node.leftChild == null && node.rightChild == null){ return level == treeHeight -1; } if(node.leftChild == null || node.rightChild == null) return false; return isPerfect(node.leftChild, level + 1, treeHeight) && isPerfect(node.rightChild, level + 1, treeHeight); } public boolean isFull(){ return isFull(root); } private boolean isFull(Node node){ if(node == null) return true; if((node.leftChild == null && node.rightChild != null) || (node.leftChild != null && node.rightChild == null)) return false; return isFull(node.leftChild) && isFull(node.rightChild); } private int getHeight(Node node){ if(node == null) return 0; int leftHeight = getHeight(node.leftChild); int rightHeight = getHeight(node.rightChild); return Math.max(leftHeight, rightHeight) + 1; } private class Node { int value; Node leftChild; Node rightChild; Node(int value) { this.value = value; leftChild = null; rightChild = null; } } }