定义节点
public class Node<T> {
private T val;
private Node<T> parent;
private Node<T> leftChild;
private Node<T> rightChild;
public T getVal() {
return val;
}
public void setVal(T val) {
this.val = val;
}
public Node<T> getParent() {
return parent;
}
public void setParent(Node<T> parent) {
this.parent = parent;
}
public Node<T> getLeftChild() {
return leftChild;
}
public void setLeftChild(Node<T> leftChild) {
this.leftChild = leftChild;
}
public Node<T> getRightChild() {
return rightChild;
}
public void setRightChild(Node<T> rightChild) {
this.rightChild = rightChild;
}
}
生成满二叉树代码
public class TreeTest<T> {
public static void main(String[] args) {
TreeTest t = new TreeTest<>();
Node n = t.initTree(3);
}
private Node<T> initTree(Integer n) {
int i = 1;
int level = 1;
Node node = new Node<>();
node.setVal(i);
handle(node,i,level,n);
return node;
}
private int handle(Node parent, int i, int level, Integer n) {
level++;
Node left = new Node<>();
Node right = new Node<>();
parent.setLeftChild(left);
parent.setRightChild(right);
left.setParent(parent);
left.setVal(++i);
right.setParent(parent);
right.setVal(++i);
if(n == level) {
return i;
}
i = handle(left, i,level,n);
i = handle(right, i,level,n);
return i;
}
}