当前位置: 首页 > 知识库问答 >
问题:

有没有解决“大小”或“高度”二叉树问题的技巧?

能钟展
2023-03-14

关于二叉树,我了解size高度之间的区别:size是节点数,而树的高度是从根到最远叶子的最大边数。

但是,在处理涉及<码>高 的问题时,我的思维往往是扭曲的,无法直截了当地思考。

对于以下两个问题,它们非常相似,除了一个对size有约束,而另一个对高度有约束。

例如,让我们先看看涉及size

在完全平衡的二叉树中,每个节点都具有以下属性:其左侧子树中的节点数和右侧子树中的节点数几乎相等,这意味着它们的差异不大于1。

编写一个函数,为给定数量的节点(n)构造所有可能的完全平衡二叉树。该函数应通过回溯生成所有解。将字母“x”作为信息放入树的所有节点。

这个问题是生成所有可能的完全平衡二叉树,只要该属性保持不变。

我认为size很简单。我能做的是这样的:

  1. 使用递归
  2. 如果n mod 2=1,则使用n=n/2生成所有此类树,然后将每对树合并为一个新根。
  3. 如果n mod 2=0,则生成一组带有n/2的树和另一组带有n/2-的树。然后将每对(来自集合的一个)与新根合并,也不要忘记交换每对内的元素
  4. 如果n=0,则返回一个只有一个叶子的集合
  5. 如果n=1,则返回一个只有一个具有两个叶子的单例内部节点的集合。

当问题中的大小变为高度时,我真的不知道如何再聪明地思考了。

在高度平衡二叉树中,每个节点都具有以下特性:左子树的高度和右子树的高度几乎相等,这意味着它们的差值不大于1。

编写一个函数,为给定数量的节点(n)构造所有可能的高度平衡二叉树。该函数应通过回溯生成所有解。将字母“x”作为信息放入树的所有节点。

我认为如果涉及身高,事情会变得相当随意。

第二题的解法和第一题一样吗?

我真的应该如何训练自己来处理身高问题?诀窍在哪里?

共有1个答案

阎德义
2023-03-14

不,不一样。考虑:(每个节点的值表示其子树的高度)

     4
   /   \
  2     3
 /     / \
1     2   2
     / \ / \
    1  1 1  1

左子树有2个节点,右子树有7个节点,但高度平衡。

您需要做的第一件事是计算某个给定高度的最小和最大节点数(最大值只是2^n-1,最小值可以从高度1开始迭代计算,或者可能还有一个公式)。

然后你需要循环左子树和右子树的高度(这将是左子树的高度1/0/-1),如果我们可以使用这些高度得到n,也就是说:这些高度的最大节点数加上一个是

我希望这是有道理的。

处理涉及身高的问题没有什么真正的诀窍——方法因问题而异。通常重要的是要记住,平衡树的高度是~log2n,一个完整的高度n树有2^n-1节点。

 类似资料:
  • 我在阅读下面的帖子后提出这个问题: 如何找到树的最小可能高度? 实际上,如果给二叉树的输入如下:100,50,70,60,我希望我的算法返回4。 但是下面的代码只返回1,因为它不区分叶[left==NULL] 没有人解释过如果我们希望输出为4而不是1,我们应该做什么。 有人能给我看看返回4而不是1的代码吗? 我认为我在上面选择了错误的样本值,人们对我真正想要的是什么感到困惑!!因此,将我的问题重新

  • 这总是使只有一个out的循环: 为了返回二叉树的正确高度,您还有其他想法(或想法如何更改此代码)吗? len是树中所有节点的数目,self。Queue是具有方法高度的类的子类。

  • 我需要关于计算二叉树高度的理论的帮助,通常是符号。 我看过以下文章: 计算二叉树的高度 其中一个帖子给出了以下符号: 高度(节点)=最大值(高度(节点L)、高度(节点R))1 假设我有以下二叉树: 因此,我是否计算左节点(8)和右节点(42)的最大值,然后加上1?我不太明白这种符号是如何计算树的高度的。

  • 我正在读二叉树。在练习编码问题时,我遇到了一些解决方案,其中要求找到二叉树的最小深度。现在根据我的理解,深度是从根到节点的边数(叶节点的情况下为叶节点/二叉树) 二叉树{1,2}的最小深度是多少 根据我的解决方案,应该是1。

  • 我需要打印一个具有深度和从高到低的二叉搜索树,根据深度,在打印节点之前增加破折号的数量。树根用0破折号,她的树梢用1破折号……我可以打印没有破折号的树,但我不知道如何用破折号打印。我用的是C.对不起我的英语不好

  • 本文向大家介绍二叉树中叶子节点的统计和树高问题,包括了二叉树中叶子节点的统计和树高问题的使用技巧和注意事项,需要的朋友参考一下 1、已知二叉树以二叉链表进行存储,其中结点的数据域为data,编写算法,统计二叉树中叶子结点值等于x的结点数目。 2、已知一棵二叉链表方式存储的二叉树,编写算法计算二叉树的高度。 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值