Java根据深度构建一个满二叉树
public class FullBinaryTreeNode<E> {
public static void main(String[] args) {
FullBinaryTreeNode<Integer> root = new FullBinaryTreeNode<>(new FullBinaryTreeNode<>(),null,null);
root.buildFullBinaryTree(root,3);
System.out.println(root);
}
public void buildFullBinaryTree(FullBinaryTreeNode<E> parent, int depth) {
if (depth <= 1) {
return;
}
FullBinaryTreeNode<E> leftNode = parent.getLeftNode();
FullBinaryTreeNode<E> rightNode = parent.getRightNode();
if (leftNode == null) {
leftNode = new FullBinaryTreeNode<>(parent,null,null);
parent.setLeftNode(leftNode);
buildFullBinaryTree(leftNode,depth-1);
}
if (rightNode == null) {
rightNode = new FullBinaryTreeNode<>(parent,null,null);
parent.setRightNode(rightNode);
buildFullBinaryTree(rightNode,depth-1);
}
}
private E node;
private FullBinaryTreeNode<E> root;
private FullBinaryTreeNode<E> leftNode;
private FullBinaryTreeNode<E> rightNode;
public FullBinaryTreeNode() {
}
public FullBinaryTreeNode(FullBinaryTreeNode<E> root, FullBinaryTreeNode<E> leftNode, FullBinaryTreeNode<E> rightNode) {
this.root = root;
this.leftNode = leftNode;
this.rightNode = rightNode;
}
public E getNode() {
return node;
}
public void setNode(E node) {
this.node = node;
}
public FullBinaryTreeNode<E> getRoot() {
return root;
}
public void setRoot(FullBinaryTreeNode<E> root) {
this.root = root;
}
public FullBinaryTreeNode<E> getLeftNode() {
return leftNode;
}
public void setLeftNode(FullBinaryTreeNode<E> leftNode) {
this.leftNode = leftNode;
}
public FullBinaryTreeNode<E> getRightNode() {
return rightNode;
}
public void setRightNode(FullBinaryTreeNode<E> rightNode) {
this.rightNode = rightNode;
}