Java数据结构:二叉树结点数和高度求法

二叉树无论求啥,递归总是能求出来

结点数:即树中圈圈的个数

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
    }

猜你喜欢

转载自blog.csdn.net/qq_42192693/article/details/85445655