• 力扣222题(完全二叉树的节点个数)


    222.完全二叉树的节点个数

    基本思想:

    递归

    具体实现:

    普通二叉树求节点个数

    1.递归参数以及返回值

    参数:根节点

    返回值:以该节点为根节点的二叉树的节点数量

    2.递归终止条件

    遍历到空节点的话,返回0,表明节点数为0

    3.单层递归的逻辑

    先求左子树节点数量,再求右子树节点数量,最后取总再加1(当前节点)

    完全二叉树求节点个数

    两种情况:

    1.满二叉树,节点个数 = 2^树深度-1

    2.分别递归左孩子和右孩子,低轨道某一深度会有左孩子或右孩子是满二叉树,按照情况1来算

    代码:

    普通二叉树求节点个数

    class Solution {
        public int countNodes(TreeNode root) {
            if (root == null) {
                return 0;
            }
            return countNodes(root.left) + countNodes(root.right) +1;
        }
    }

    完全二叉树求节点个数

    class Solution {
        /**
         * 针对完全二叉树的解法
         *
         * 满二叉树的结点数为:2^depth - 1
         */
        public int countNodes(TreeNode root) {
            TreeNode l = root, r = root;
            int hl = 0, hr = 0;
            while (l != null){
                l = l.left;
                hl++;
            }
            while (r != null){
                r = r.right;
                hr++;
            }
            if(hl == hr){
                return (int)Math.pow(2,hl) -1;
            }
            return 1 + countNodes(root.left) + countNodes(root.right);
        }
    }
    class Solution {
        //迭代法
        public int countNodes(TreeNode root) {
            if (root == null) return 0;
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            int result = 0;
            while (!queue.isEmpty()){
                int size = queue.size();
                while(size-- > 0){
                    TreeNode cur = queue.poll();
                    result++;
                    if (cur.left != null) queue.offer(cur.left);
                    if (cur.right != null) queue.offer(cur.right);
                }
            }
            return result;
        }
    }
  • 相关阅读:
    移动浏览器的四大内核
    H5页面移动端兼容性测试
    如何定义关键字
    web通用测试点总结
    katalon数据库处理
    jmeter jdbc请求测试
    jmeter实现数据驱动分离(if控制器的使用)
    Vue3 具名插槽+作用域插槽同时使用的方法
    webpack-5.x版本 启动server服务时的报错和解决办法
    webpack 图片打包时,,出现图像未加载问题
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15376462.html
Copyright © 2020-2023  润新知