二叉树无论求啥,递归总是能求出来
结点数:即树中圈圈的个数
public int size() //返回二叉树的结点数
{
return size(root);
}
public int size(BinaryNode<T> p) //返回以p结点为根的子树的结点数
{
if (p==null)
return 0;
return 1+size(p.left)+size(p.right); //左右树分开求
}
高度:二叉树每个子树的最大高度,每个子树的高度等于从根节点到该子树的最后一个结点中的结点数
public int height() //返回二叉树的高度
{
return height(root);
}
public int height(BinaryNode<T> p) //返回以p结点为根的子树高度,后根次序遍历
{
if (p==null)
return 0;
int lh = height(p.left); //返回左子树的高度
int rh = height(p.right); //返回右子树的高度
return (lh>=rh) ? lh+1 : rh+1; //当前子树高度为较高子树的高度加1
}