Count Complete Tree Nodes

来源:互联网 发布:华硕路由器端口转发 编辑:程序博客网 时间:2024/05/22 16:41

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    void traverseLeft(TreeNode* root, int& h)    {        if(root == NULL)        {            return;        }        ++ h;        traverseLeft(root -> left, h);             }    void traverseRight(TreeNode* root, int& h)    {        if(root == NULL)        {            return;        }        ++ h;        traverseRight(root -> right, h);    }    int countNodes(TreeNode* root)     {        if(root == NULL)        {            return 0;        }        int h1 = 1;        int h2 = 1;        traverseLeft(root -> left, h1);        traverseRight(root -> right, h2);        if(h1 == h2)        {            return pow(2, h1) - 1;        }        //int h = max(h1, h2);        return countNodes(root -> left) + countNodes(root -> right) + 1;    }};


0 0
原创粉丝点击