public void recurInsert(BinaryTree.Node root, BinaryTree.Node newNode, int height) {
if (newNode == null) {
System.out.println(\"InsertNode is empty, ple
//Node---
public class BinaryTreeNode {
private T data;
private BinaryTreeNode leftNode;
private BinaryTreeNode rightNode;
public BinaryTreeNode(T data) {
this.data = data;
this.leftNode = null;
this.rightNode = null;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public BinaryTreeNode getLeftNode() {
return leftNode;
}
public void setLeftNode(BinaryTreeNode leftNode) {
this.leftNode = leftNode;
}
public BinaryTreeNode getRightNode() {
return rightNode;
}
public void setRightNode(BinaryTreeNode rightNode) {
this.rightNode = rightNode;
}
}
//Binary Tree---
public class BinaryTree {
private BinaryTreeNode rootNode;
public BinaryTreeNode getRootNode() {
return rootNode;
}
public void setRootNode(BinaryTreeNode rootNode) {
this.rootNode = rootNode;
}
public void insert(T data){
this.setRootNode(insert(this.getRootNode(), data));
}
private BinaryTreeNode insert(BinaryTreeNode node, T data){
if(node == null){
node = new BinaryTreeNode<>(data);
}else{
if(node.getLeftNode() == null){
node.setLeftNode(insert(node.getLeftNode(), data));
}else if(node.getRightNode() == null){
node.setRightNode(insert(node.getRightNode(), data));
} else{
if(node.getLeftNode().getLeftNode() == null || node.getLeftNode().getRightNode() == null){
insert(node.getLeftNode(), data);
}else if(node.getRightNode().getLeftNode() == null || node.getRightNode().getRightNode() == null){
insert(node.getRightNode(), data);
}else{
insert(node.getLeftNode(), data);
}
}
}
return node;
}
}