LeetCode "Count Complete Tree Nodes"
2015-06-06 05:35
471 查看
DFS solution is intuitive. I put my BFS solution below:
class Solution { public: int countNodes(TreeNode* root) { if (!root) return 0; // Case 1: complete int hl = 0, hr = 0; TreeNode *pl = root; while(pl) { hl ++; pl = pl->left; } TreeNode *pr = root; while(pr) { hr ++; pr = pr->right; } if (hl == hr) { return pow(2, hl) - 1; } // Case 2: incomplete deque<TreeNode *> q; q.push_back(root); int pcnt = 1; int level = 0; while(!q.empty()) { auto ptop = q.front(); q.pop_front(); pcnt --; if (ptop->left) q.push_back(ptop->left); if (ptop->right) q.push_back(ptop->right); if(pcnt == 0) { pcnt = q.size(); level ++; if (level == hr) { break; } } } return pow(2, hr) - 1 + pcnt; } };
相关文章推荐
- leetcode 222: Count Complete Tree Nodes
- 翻译 - NodeJS错误处理最佳实践
- LeetCode题解(19)--Remove Nth Node From End of List
- Setup node.js on Windows Server
- 5.1.10 Populating Next Right Pointers in Each Node II
- node-glob学习
- 用NODEJS处理EXCEL文件导入导出,文件上传
- iOS 用GDataXMLNode创建和解析XML
- LeetCode_19---Remove Nth Node From End of List
- 【NodeJS】---express配置ejs mongoose route等
- nodejs安装及环境配置
- leetcode 19 -- Remove Nth Node From End of List
- nodePPT 这可能是迄今为止最好的网页版PPT
- NodeJs安装教程
- 用 node 实现仿微信风格的 token 获取接口
- Node.js 学习资源总结
- Use Node.js DDP Client on Arduino Yun to Access Meteor Server
- Reverse Nodes in k-Group
- nodejs(npm)——创建全局链接
- 一个强大的UI node 抽象