您现在的位置是:主页 > news > 公司网站域名com好还是cn好/优化seo

公司网站域名com好还是cn好/优化seo

admin2025/5/15 22:23:01news

简介公司网站域名com好还是cn好,优化seo,网页显示wordpress,全球新冠疫情最新消息数据1、满二叉树的定义 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为…

公司网站域名com好还是cn好,优化seo,网页显示wordpress,全球新冠疫情最新消息数据1、满二叉树的定义 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为…

1、满二叉树的定义

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。

国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。

参考:百度百科.满二叉树的定义

2、根据满二叉树的定义,求解方法如下:

其实明白了满二叉树的定义后,这个题就很好解了,无非就是求得整棵树的高度和节点个数,看看高度和节点个数是否满足 N = 2^L - 1 公式即可。

  • 求出节点个数 N 和树的最大深度 L
  • 通过公式:N = 2^L - 1 计算即可,如果等式成立,则说明是一棵满二叉树,否则就不是满二叉树。
  • 可以使用二叉树题目的套路来求解该题目(即递归向左右孩子要信息)!!!

代码如下:

public static class ReturnData {// 节点的个数public int count;// 树的高度public int heigh;public ReturnData(final int count, final int heigh) {this.count = count;this.heigh = heigh;}
}
public static ReturnData isFullTreeProcess(final TreeNode head) {// base caseif (head == null) {// 当节点为空的时候,递归向上返回,此时该节点代表的子树的节点个数为0,树高位0return new ReturnData(0, 0);}// 1、向左孩子要数据final ReturnData leftResult = isFullTreeProcess(head.left);// 2、向右孩子要数据final ReturnData rightResult = isFullTreeProcess(head.right);// 3、组装当前节点的数据,最后返回给递归调用的上层// 由当前节点组成的子树的节点个数 = 左孩子的节点个数 + 有孩子的节点个数 + 1final int currentCount = (leftResult.count + rightResult.count) + 1;// 由当前节点组成的子树的高度 = 左右孩子中树高最高的那个 + 1final int currentHeigh = leftResult.heigh > rightResult.heigh ? leftResult.heigh + 1 : rightResult.heigh + 1;return new ReturnData(currentCount, currentHeigh);}