222. Count Complete Tree Nodes

    xiaoxiao2021-03-25  77

    Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.

    Subscribe to see which companies asked this question.

    完全二叉树。思路是先找到树的高度h,如果右子树的高度为h-1的话证明最后一个节点在右子树,左子树为满树,因此res+=左子树的节点个数+根节点=2^(h-1),根节点移到右边。

    如果右子树的高度不为h-1的话证明最后一个节点在左子树,右子树为满树,res+=右子树的节点个数+根节点=2^(h-2).根节点移到左边。

    class Solution { public: int height(TreeNode* root){ return root==NULL ? -1 : height(root->left)+1; } int countNodes(TreeNode* root) { int sum=0, h=height(root); while(root){ if(height(root->right) == h - 1){ sum += pow(2,h); root = root->right; } else{ sum += pow(2,h-1); root = root->left; } h--; } return sum; } };需要注意的是这里为了计算方便,直接返回的h值就是实际的h值-1.比如叶子节点的高度是0.

    转载请注明原文地址: https://ju.6miu.com/read-32648.html

    最新回复(0)