数据结构与算法之完全二叉树的节点个数


目录

  1. 数据结构与算法之完全二叉树的节点个数

1. 数据结构与算法之完全二叉树的节点个数

(一)思路
  1. 先遍历左边界获得树的高度h
  2. 遍历右子树的左边界,看看到没到最后一层,如果到了,那么左子树是满二叉树,右子树也可以这样分析
  3. 同理,遍历右子树的左边界,如果没有到最后一层,那么右子树是满二叉树,左子树也可以这样分析。


(二) 代码实现

public class Code_CompleteTreeNodeNumber {public static class Node {public int value;public Node left;public Node right;public Node(int data) {this.value = data;}}public static int nodeNum(Node head) {if (head == null) {return 0;}return bs(head, 1, mostLeftLevel(head, 1));}public static int bs(Node node, int level, int h) {if (level == h) {return 1;}if (mostLeftLevel(node.right, level + 1) == h) {return (1 << (h - level)) + bs(node.right, level + 1, h);} else {return (1 << (h - level - 1)) + bs(node.left, level + 1, h);}}public static int mostLeftLevel(Node node, int level) {while (node != null) {level++;node = node.left;}return level - 1;}public static void main(String[] args) {Node head = new Node(1);head.left = new Node(2);head.right = new Node(3);head.left.left = new Node(4);head.left.right = new Node(5);head.right.left = new Node(6);System.out.println(nodeNum(head));}}

数据结构与算法之完全二叉树的节点个数相关推荐

  1. 漫画:二叉树系列 第七讲(完全二叉树的节点个数)

    在上一篇中,我们学习了解了平衡二叉树,并且利用DFS进行了验证.在本节中,我们将继续学习完全二叉树的相关内容.首先了解一下什么是完全二叉树. 01 完全二叉树 完全二叉树由满二叉树引出,先来了解一下什 ...

  2. [JavaScript 刷题] 树 - 完全二叉树的节点个数, leetcode 222

    [JavaScript 刷题] 树 - 完全二叉树的节点个数, leetcode 222 github repo 地址: https://github.com/GoldenaArcher/js_lee ...

  3. c#二叉树 取叶子节点个数_二叉树的最小深度+完全二叉树的节点个数

    二叉树的最小深度 题目:给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 示例 1: 输入:root = [3,9,20 ...

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

    222. 完全二叉树的节点个数 题目描述: 给你一棵 完全二叉树的根节点 root ,求出该树的节点个数. 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值 ...

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

    222. 完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集 ...

  6. 二叉树11:完全二叉树的节点个数

    Leetcode 222.完全二叉树的节点个数 要求是 给出一个完全二叉树,求出该树的节点个数. 完全二叉树的节点数其实是可以在找到最后一层最右侧的元素之后直接使用公式计算的.这里我们需要先明确什么是 ...

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

    完全二叉树的节点个数 题目链接 描述 示例 初始代码模板 代码 题目链接 https://leetcode-cn.com/problems/count-complete-tree-nodes/ 描述 ...

  8. Leecode 222. 完全二叉树的节点个数——Leecode日常刷题系列

    题目链接:https://leetcode-cn.com/problems/count-complete-tree-nodes/ 题解汇总:https://leetcode-cn.com/proble ...

  9. 【Leetcode | 47】 222. 完全二叉树的节点个数

    给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置.若最底 ...

最新文章

  1. 怎样检查Android网络连接状态
  2. android开发中Switch开关在Dialog中不显示
  3. Node_初步了解(4)小爬虫
  4. 使用github+jsdelivr作为视频床
  5. c语言中123 234 345 456,如何在C中将数字从1123456789格式化为1,123,456,789?
  6. 读取和修改caffemodel文件里的参数
  7. dubbo全局异常处理_详解Dubbo无法处理自定义异常及解决方案
  8. 2018拼多多内推校招编程题
  9. The Geometry has no Z values 解决办法
  10. sql 字段相减_R语言ETL系列:创建字段(mutate)
  11. 每秒几十万的大规模网络爬虫是如何炼成的?
  12. WinUsbNet: A managed interface to WinUSB.sys
  13. shell脚本学习指南_学习笔记_第1,2章
  14. json在线解析工具
  15. 数组分为两部分,使得其和相差最小
  16. 同事换签名,心有猛虎细嗅蔷薇
  17. 【脚本小子狂喜】日常实用脚本推荐
  18. 解决ueditor编辑器图片在线管理图片无法显示
  19. python医院体检预约系统django548
  20. 在同一台机运行多个mysql 服务 多个主/从在同一主机_在同一台机运行多个Mysql 服务 多个主/从在同一主机...

热门文章

  1. springMVC---处理模型数据方法 *
  2. Leveldb二三事
  3. typedef和函数指针定义
  4. Mina代码跟踪(1)
  5. 在EO中获取某字段基于表的列名
  6. 美国域名总量跌至7971万:4月上旬降幅缩小32.4%
  7. wordpress使用二级域名绑定七牛云存储做图片存储站
  8. postfix+squirrelmail - rhat 5.4
  9. Lync在Internet上无法登录问题之一
  10. WinForm 入口Main方法