Leetcode 222. 完全二叉树的节点个数(中等)
题目:
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
*
* 完全二叉树
* 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h
* 层,则该层包含 1~ 2^h 个节点。
思路:labuladong
对于满二叉树,可以通过2^n-1的方式,先计算深度在计算个数。对于普通二叉树遍历所有结点。
那么对于完全二叉树,它肯定是由满二叉树以及普通二叉树组成,因此对于满二叉树的部分,可以直接计算。对于其余部分遍历计算
class Solution { public: int countNodes(TreeNode* root) { if(root==nullptr){ return 0; } TreeNode* left=root->left; int l=1; while(left!=nullptr){ left=left->left; l++; } TreeNode* right=root->right; int r=1; while(right!=nullptr){ right=right->right; r++; } if(l==r){ return pow(2,l)-1; } return 1+countNodes(root->left)+countNodes(root->right); } };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=