1.二叉树
-
二叉树是每个节点最多有两个子树的树结构
-
满二叉树:除叶子节点外,所有节点的度都为2
-
完全二叉树:叶子结点只能出现在最下两层;最下层的叶子一定集中在左部连续位置;倒数二层,若有叶子结点,一定都在右部连续位置;如果结点度为1 ,则该结点只有左孩子,即不存在只有右子树的情况;同样结点数的二叉树,完全二叉树的深度最小。
-
哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树
2.前中序遍历的代码实现(递归与非递归)
//创建二叉树(前序遍历)定义字符串
int index = 0;
public Node init(String s) {
if (index >= s.length()) {
return null;
}
char ch = s.charAt(index++);
if (ch == '#') {
return null;
}
Node node = new Node(ch);
node.setLchild(init(s));
node.setRchild(init(s));
this.root = node;
return root;
}
//递归前序遍历
public void preOrderTraverse(Node root) {
if (root == null) {
return;
}
System.out.print(root.getData()+" ");
preOrderTraverse(root.getLchild());
preOrderTraverse(root.getRchild());
}
//递归中序遍历
public void inOrderTraverse(Node root) {
if (root == null ) {
return;
}
inOrderTraverse(root.getLchild());
System.out.print(root.getData()+" ");