【JS每日一算法:剑指Offer系列】🟩170. 完全二叉树的节点个数(深度优先)

91 阅读1分钟

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

 示例 1:

输入: root = [1,2,3,4,5,6]
输出: 6

示例 2:

输入: root = []
输出: 0

示例 3:

输入: root = [1]
输出: 1

提示:

  • 树中节点的数目范围是[0, 5 * 104]
  • 0 <= Node.val <= 5 * 104
  • 题目数据保证输入的树是 完全二叉树

题解:

个人博客

更多JS版本题解点击链接关注该仓库👀

/**
 * @description: 深度优先  TC:O(n)  SC:O(1)
 * @author: JunLiangWang
 * @param {*} root 给定树的根节点
 * @return {*}
 */
function dfs(root){
    /**
     * 本方案使用深度优先遍历二叉树
     * 计算其节点即可
     */

    // 记录节点树
    let count=0;
    /**
     * @description: 递归回溯实现深度优先
     * @author: JunLiangWang
     * @param {*} root 子树根节点
     * @return {*}
     */    
    function recursion(root){
        if(!root)return
        count++;
        recursion(root.left)
        recursion(root.right)
    }
    // 执行递归
    recursion(root)
    // 返回结果
    return count
}