本文主要是介绍[力扣题解] 222. 完全二叉树的节点个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:222. 完全二叉树的节点个数
思路
随便一种遍历方式都行
代码
Method 1 : Me
class Solution {
public:int countNodes(TreeNode* root) {if(root == NULL){return 0;}int result = 0;queue<TreeNode*> que;que.push(root);while(!que.empty()){ result++;TreeNode* cur = que.front(); que.pop();if(cur->left){que.push(cur->left);}if(cur->right){que.push(cur->right);}}return result;}
};
这个方法其实是我好几天没看二叉树的遍历再写的,很不巧我忘记了``;
Method 2
class Solution {
public:int countNodes(TreeNode* root) {int i, size;if(root == NULL){return 0;}int result = 0;queue<TreeNode*> que;que.push(root);while(!que.empty()){ size = que.size();for(i = 0; i < size; i++){result++;TreeNode* cur = que.front(); que.pop();if(cur->left){que.push(cur->left);}if(cur->right){que.push(cur->right);}}}return result;}
};
这个才是正确的,虽然上面2个都可以跑通这道题,但是方法一在遍历节点的时候不好直接分层,会输出[[1], [2], [3], [4], [5]]
,
方法二会输出[[1], [2, 3], [4, 5]]
;
这篇关于[力扣题解] 222. 完全二叉树的节点个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!