Count Complete Tree Nodes算法详解

来源:互联网 发布:中国经济金融数据库 编辑:程序博客网 时间:2024/06/06 15:36

题目: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.

题意:给定一颗完全二叉树,数它的结点数并返回

思路:递归解法,先判断一颗二叉树是不是满二叉树,若是则返回其结点数,若不是递归调用其两个子节点

    int countNodes(TreeNode* root) {        if(root==NULL)return 0;        TreeNode* l=root->left;        TreeNode* r=root->right;        int h=1;        while(l&&r)        {            h++;            l=l->left;            r=r->right;        }        if(l||r) return countNodes(root->left)+countNodes(root->right)+1;        return pow(2,h)-1;    }
0 0
原创粉丝点击