Algorithm 如何生成具有6个节点的完整二叉树?

Algorithm 如何生成具有6个节点的完整二叉树?,algorithm,binary-tree,Algorithm,Binary Tree,我很了解完全二叉树和完全二叉树。但无法生成只有6个节点的完整二叉树。答案是否。只有6个节点无法生成完整的二叉树。正如《公约》中的定义所述: 一个完整的二叉树(有时被称为真树或平面) 二叉树)是每个节点都有0或2的树 儿童定义完整二叉树的另一种方法是递归 定义。完整的二叉树是: 单个顶点 一种树,其根节点有两个子树,这两个子树都是完整的二叉树 我注意到的另一个有趣的特性是,生成完整二叉树所需的节点数总是奇数。详细阐述@vivek_23的答案,不幸的是,这是不可能的。有一个美丽的定理说: 定理:任何

我很了解完全二叉树和完全二叉树。但无法生成只有6个节点的完整二叉树。

答案是
。只有6个节点无法生成完整的二叉树。正如《公约》中的定义所述:

一个完整的二叉树(有时被称为真树或平面) 二叉树)是每个节点都有0或2的树 儿童定义完整二叉树的另一种方法是递归 定义。完整的二叉树是:

单个顶点

一种树,其根节点有两个子树,这两个子树都是完整的二叉树


我注意到的另一个有趣的特性是,生成完整二叉树所需的节点数总是奇数。

详细阐述@vivek_23的答案,不幸的是,这是不可能的。有一个美丽的定理说:

定理:任何完整的二叉树都有2L-1个节点,其中L是树中的叶节点数

这个定理背后的直觉其实很简单。假设您获取一个完整的二叉树并从中删除所有内部节点。现在,您有了一个由L个单节点完整的二叉树组成的森林,每个叶对应一棵树。现在,一次添加一个内部节点。每次这样做时,您将在森林中选取两棵不同的树,并将它们合并为一棵树,从而将森林中的树数减少一棵。这意味着您必须有完全L-1的内部节点,因为如果有更少的节点,您将无法将林中的所有树合并在一起,如果有更多的节点,您将没有树可以合并

一个完整的二叉树中总共有2L-1个节点,这意味着一个完整的二叉树中的节点数总是奇数,所以你不能创建一个有6个节点的完整的二叉树。然而,您可以创建一个具有任意数量奇数节点的完整二叉树-您能想出如何证明这一点吗


希望这有帮助

查看完整二叉树具有奇数个节点的另一种方法:

从完整二叉树()的定义开始:

每个节点都有0或2个子节点的树

这意味着子节点的总数为偶数(0+2+2+0+…+2始终为偶数)。只有一个节点不是另一个节点的子节点,即根节点。因此,考虑到这个节点,总数也变为奇数


因此,没有包含6个节点的完整二叉树。

这取决于您希望如何表示它。用数组?用指针?这是一个漂亮的论点-我以前从未见过!我的方法是根据一个证明来建模的,即具有L叶的多路树最多有2L-1个总节点,这推广到具有更多内部节点的树,但由于它太一般,因此不允许使用与您相同的洞察力。我要把这记下来,以备将来之用!