在二叉树中,对于每个节点,左右节点数之差
Posted
技术标签:
【中文标题】在二叉树中,对于每个节点,左右节点数之差【英文标题】:In a binary tree, for every node the difference between the number of nodes in the left and right 【发布时间】:2020-04-22 22:39:03 【问题描述】:在二叉树中,对于每个节点,左右子树的节点数之差最多为2。如果树的高度为h>0,则树中的最小节点数为.
我的理解:该树中的总节点数 = 左子树节点数 + 右子树节点数 + 1(根节点)
= 左子树节点数 + ( 左子树节点数 - 2 ) + 1
= 左子树节点数 + 左子树节点数 - 2 + 1
= 2 * 左子树节点数 - 1
H(n) = 2*H(n-1)-1 在这里,我使用替换解决了它,但是当我输入 h(0)=1 时,它只给出 1 作为答案而不是 H。你能帮我解释一下为什么我不能把 h(0)=1 作为我的基本条件,因为它也满足给定的二叉树。
【问题讨论】:
【参考方案1】:您的重复假设您的树有节点。
H(n) = 2*H(n-1) - 1
假定 H(n-1)
已定义。但是对于 n=0,H(n-1) = H(-1)
这没有意义。所以你需要为H(0)
建立你的基本案例,你可以用一个简单的参数来做。
因此,当 n = 0 和 H(n) = 2*H(n-1) - 1
如果 n > 0
时,您的重复将是 H
的值。
另外,你应该在你的论点中使用 >=。左子树实际上可能更大。
没有。左子树节点数 + 没有。右子树节点数 + 1 >= 否。左子树节点数 + (左子树节点数 - 2) + 1
【讨论】:
【参考方案2】:当 n=1 时,在最小的情况下,从根开始的左子树有 1 个节点,但右子树有 0 个节点,而不是您的推理所建议的 -1 个节点。
对于 n>1,你的推理是正确的。
所以你需要假设 H(1)=2,然后你会得到正确的结果。
【讨论】:
以上是关于在二叉树中,对于每个节点,左右节点数之差的主要内容,如果未能解决你的问题,请参考以下文章