二叉树
一、二叉树
1.二叉树概念
- 每个结点最多有两棵子树,即二叉树不存在度大于 2 的结点。
2.左右子树是有顺序的,不能颠倒
2.两种特殊二叉树
满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就
是说,如果一个二叉树的层数为K,且结点总数是
2^k-1,则它就是满二叉树
完全二叉树: 完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都深度为K的满二叉树中编号从1至n的结点
一一对应时称之为完全二叉树。满二叉树是一种特殊的完全二叉树。
3.二叉树的创建
用左右结点来代表二叉树
//创建一个二叉树
class Node{
public Node(String val) {
this.val = val;
}
String val;
Node leftNode;
Node rightNode;
}
//创建一个树(手动写死的方式)
public static Node createBinaryTree(){
Node a=new Node("A");
Node b=new Node("B");
Node c=new Node("C");
Node d=new Node("D");
Node e=new Node("E");
Node f=new Node("F");
Node g=new Node("G");
a.leftNode=b;
a.rightNode=c;
b.leftNode=d;
b.rightNode=e;
e.leftNode=g;
c.rightNode=f;
return a;
}
二、二叉树的性质
- 若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有 2 i − 1 2^{i-1} 2i−1(i>0)个结点
- 若规定只有根节点的二叉树的深度为1,则深度为K的二叉树的最大结点数是 2 k − 1 2^k-1 2k−1(k>=0)
- 对任何一棵二叉树, 如果其叶结点个数为 n0, 度为2的非叶结点个数为 n2,则有n0=n2+1
- 具有n个结点的完全二叉树的深度k为 l o