美文网首页
N个结点的二叉树形态

N个结点的二叉树形态

作者: Beanya | 来源:发表于2018-04-13 10:06 被阅读0次

设f(n)表示n个结点的二叉树的形态数

对于n=0的情况,树只有一种形态,即没有结点的状态,f(0) = 1。

对于n=1的情况,树只有一种形态,即f(1) = 1。

对于n=2的情况,固定一个结点为根节点,则剩下的另一结点分布在左子树,或右子树,且结点与结点相同(不会产生结点位置问题),得f(2)=2。

对于更多情况,与n=2的思路相同,造成树的形态不同的是左子树和右子树上的结点数量。

可得f(n) = Σ( m=1 -> n )f(m) * f(n-m-1) ,根结点固定所以减一,m表示左子树所拥有的结点数,n-m-1则为右子树,由排列组合原理可知左树形态与右树形态相乘。

Java实现:

int f(int n){

    int result = 0;

    if(n==1||n==0)

        return 1;

    for (int i = 0; i < n; i++) {

        result += f(i)*f(n-i-1);

    }

    return result;

}

即递归地求,左子树和右子树的形态数,排列组合将其相乘即可。

相关文章

  • N个结点的二叉树形态

    设f(n)表示n个结点的二叉树的形态数 对于n=0的情况,树只有一种形态,即没有结点的状态,f(0) = 1。 对...

  • 10.二叉树

    二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和...

  • 数据结构之二叉树详解

    一、什么是二叉树? 二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两...

  • 二叉树

    二叉树(Binary Tree)是n(n>=0)个结点的有限集合或者为空集合(称为空二叉树),或者由一个根结点和两...

  • 所有可能的满二叉树

    leetcode 894 满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。 返回包含 N 个结点的...

  • 894. 所有可能的满二叉树

    满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。 返回包含 N 个结点的所有可能满二叉树的列表。 ...

  • 2021-05-21Python算法二叉树

    PythonMOOC算法二叉树 二叉树是由n(n≥0)个结点组成的有限集合、每个结点最多有两个子树的有序树。它或者...

  • Leetcode 894. 所有可能的满二叉树

    问题描述 满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。返回包含 N 个结点的所有可能满二叉树的...

  • 二叉树及基本操作

    二叉树的基本概念: 二叉树的每个结点最多只有两个孩子结点,也就是说每个结点最多有两个子树。二叉树有 5 种基本形态...

  • 完全二叉树性质

    具有n 个结点的完全二叉树的深度为或。

网友评论

      本文标题:N个结点的二叉树形态

      本文链接:https://www.haomeiwen.com/subject/lyzqkftx.html