求二叉树节点个数(递归+非递归)

算法 专栏收录该内容
88 篇文章 0 订阅

求二叉树节点个数


递归解法

    /**
     * 获取二叉树节点数量
     * @param node
     * @return
     */
    public int getNodeCount(TreeNode node){
        if (node == null){//二叉树为空,节点个数为0
            return 0;
        }
        return getNodeCount(node.left) + getNodeCount(node.right) + 1;//二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1
    }

非递归解法

这里使用了层序遍历的方式。

    /**
     * 获取二叉树节点数量
     * @param node
     * @return
     */
    public int getNodeCount2(TreeNode node){
        if (node == null){//二叉树为空,节点个数为0
            return 0;
        }
        int count = 0;
        LinkedList<TreeNode> linkedList = new LinkedList<>();
        linkedList.add(node);
        while (!linkedList.isEmpty()){
            TreeNode tmp = linkedList.poll();
            count++;
            if (tmp.left != null){
                linkedList.add(tmp.left);
            }
            if (tmp.right != null){
                linkedList.add(tmp.right);
            }
        }
        return count;
    }
  • 3
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值