Leecode222-完全二叉树的节点个数

该文章描述了一种通过层序遍历计算完全二叉树节点数的方法。首先检查根节点是否为空,然后使用LinkedList作为队列存储节点,并创建ArrayList记录节点值。在遍历过程中,计算每层的节点数,将节点的左右子节点加入队列,直至队列为空。最后返回结果集的大小即为节点总数。
摘要由CSDN通过智能技术生成
leecode222 完全二叉树的节点个数
求完全二叉树的节点个数,我采用的思想是像前面的层序遍历一样,按照层序遍历每一行的节点个数存入到结果集,最后使用长度计算结果集的节点个数。
按照层序遍历的思想:
(1)首先判断节点是否为空,为空则返回0;
(2)定义一个存放整数节点的结果集,List<Integer> res=new ArrayList(); ArrayList()是因为其只存放结果,不会有增删改的操作,因此选用。
当需要对列表进行修改的话选用LinkedList,定义一个队列,队列的定义方法为Queue<Treenode> q=new LinkedList<>();根节点不为空的情况下将其压入到队列中;
(3)遍历循环队列不为空的情况,当前队列是根节点不为空时,计算当前队列大小,计算大小的原因是每一层的数量不一样,避免取多或取少的情况。
再定义一个临时节点读取其元素放入结果集,读取完成后,再判断刚才节点的左右孩子是否为空,不为空则依次放入队列,重复此步骤;
最后求结果集的大小即可知结果。
class Solution {
    public int countNodes(TreeNode root) {
        if (root == null) {
            return 0;
        }
        Queue<TreeNode> q = new LinkedList<>();
        List<Integer> res=new LinkedList<>();
        q.offer(root);
        while(!q.isEmpty()){
            int size=q.size();
            for(int i=0;i<size;++i){
                TreeNode cur=q.peek();
                q.poll();
                res.add(cur.val);
                if(cur.left!=null){
                    q.offer(cur.left);
                }
                if(cur.right!=null){
                    q.offer(cur.right);
                }

            }
        }
        return res.size();
        
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值