Count Complete Tree Nodes
2015-06-08 21:30
495 查看
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 2hnodes inclusive at the last level h.
方法1:递归
从root开始,一直向左的深度 == 一直向右的深度,则说明root是一个满二叉树,节点个数为2^height - 1
若不是,则节点个数为 countNodes(root->left) + countNodes(root->right) + 1;
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 2hnodes inclusive at the last level h.
方法1:递归
从root开始,一直向左的深度 == 一直向右的深度,则说明root是一个满二叉树,节点个数为2^height - 1
若不是,则节点个数为 countNodes(root->left) + countNodes(root->right) + 1;
/** * 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: int countNodes(TreeNode* root) { if (root == NULL) { return 0; } int left_height = get_height(root, true); //从root开始 int right_height = get_height(root, false); if (left_height == right_height) { return pow(2, left_height) - 1; } return countNodes(root->left) + countNodes(root->right) + 1; } private: int get_height(TreeNode *root, bool toLeft) { if (root == NULL) { return 0; } if (toLeft) { return get_height(root->left, true) + 1; } return get_height(root->right, false) + 1; } };
相关文章推荐
- Sublime2 运行NodeJS
- LeetCode 25: Reverse Nodes in k-Group
- [LeetCode] Count Complete Tree Nodes
- 升级 node 版本
- 谁才是性能之王?( Node.js vs io.js v2.0.0 )
- LeetCode_24---Swap Nodes in Pairs
- 用链表实现nodejs的内存对象管理
- Node.js是一个事件驱动I/O服务端JavaScript环境
- puppet学习笔记之node/package/service/file/user/group/cron/exec管理
- IIS部署Nodejs步骤
- Hadoop中namenode/datanone没有启动
- nodejs - 如何完全更新
- leetcode 日经贴,Cpp code -Count Complete Tree Nodes
- Hadoop集群中启动namenode失败的解决办法
- leetcode 24 -- Swap Nodes in Pairs
- root.sh Fails on the First Node for 11gR2 Grid Infrastructure Installation
- node.js学习总结(不定期更新)
- nodejs express 框架使用
- Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详介AvatarNode
- Populating Next Right Pointers in Each Node I, II