quote

lunedì, gennaio 01, 2018

Invert a binary tree in java

package org.enricogiurin.puzzles.varie;
/**
* Created by enrico on 12/30/17.
* https://www.programcreek.com/2014/06/leetcode-invert-binary-tree-java/
*/
public class BinaryTree<T extends Comparable> {
private BinaryTree<T> left;
private BinaryTree<T> right;
private T value;
public BinaryTree(T value){
this.value = value;
}
public void add(T value){
if(value==null){
return;
}
add(value, this);
}
private void add(T value, BinaryTree binaryTree){
if(value.compareTo(binaryTree.value) <= 0) {
//insert left
if(binaryTree.left == null){
binaryTree.left = new BinaryTree(value);
}else{
add(value, binaryTree.left);
}
}else{
//insert right
if(binaryTree.right == null){
binaryTree.right = new BinaryTree(value);
}
else{
add(value, binaryTree.right);
}
}
}
public void printBinaryTree(BinaryTree binaryTree) {
System.out.println(binaryTree.value);
if(binaryTree.left != null){
printBinaryTree(binaryTree.left);
}
if(binaryTree.right != null){
printBinaryTree(binaryTree.right);
}
}
public void invert() {
invert(this);
}
private void invert(BinaryTree binaryTree){
BinaryTree tmp = binaryTree.left;
binaryTree.left = binaryTree.right;
binaryTree.right = tmp;
if(binaryTree.left!=null){
invert(binaryTree.left);
}
if(binaryTree.right!=null){
invert(binaryTree.right);
}
}
public static void main(String[] args) {
BinaryTree<Integer> binaryTree = new BinaryTree<>(5);
binaryTree.add(2);
binaryTree.add(7);
binaryTree.add(9);
binaryTree.add(6);
binaryTree.printBinaryTree(binaryTree);
binaryTree.invert();
System.out.println("*****");
binaryTree.printBinaryTree(binaryTree);
}
}
view raw BinaryTree.java hosted with ❤ by GitHub