此题中核心思路是使用DFS(深度优先搜索),再加上以下2句话:
1:当x的左子树为满二叉树,右子树为完全二叉树,且x的左孩子高度与右孩子则高度相等,则x一定为完全二叉树
2:当x的左孩子高度等于右孩子高度加一,且左子树为完全二叉树,右子树为满二叉树,则x一定是完全二叉树
知道了思路,就要实现,我们要数组 n:有n个结点 ans:有多少个完全二叉树 l数组:第i号节点的左孩子 r数组:第i号节点的右孩子 c数组:(可使用bool类型)已i节点为根的二叉树是否是完全二叉树 f数组(可使用bool类型):i的子树是否为满二叉树 h数组:第i个节点的高度(深度)(注意:根节点高度(深度)为一)
接下来是代码了: