什么是满二叉树(FBT)?

高度为h且该树的节点总个数为2^h-1

代码实现:

public class FullBinaryTree {public static class Node {public int value;public Node left;public Node right;public Node(int value) {this.value = value;}}public static class Info {public int height;public int nodes;public Info(int height, int nodes) {this.height = height;this.nodes = nodes;}}// 判断以head为根节点的树是否为满二叉树public static boolean isFBT(Node head) {if (head == null) {return true;}Info data = process(head);// 判断是否满足满二叉树特性,即判断2^h-1和总节点数的大小return data.nodes == (1 << data.height - 1);}public static Info process(Node x) {// base caseif (x == null) {return new Info(0, 0);}Info leftData = process(x.left);Info rightData = process(x.right);// 1. 获取以x为根节点的树的高度int height = Math.max(leftData.height, rightData.height) + 1;// 2. 获取以x为根节点的树的总节点个数int nodes = leftData.nodes + rightData.nodes + 1;// 3. 返回以x为根节点的树的信息return new Info(height, nodes);}
}

算法与数据结构-满二叉树(FBT)相关推荐

  1. 算法与数据结构(三) 二叉树的遍历及其线索化(Swift版)

    前面两篇博客介绍了线性表的顺序存储与链式存储以及对应的操作,并且还聊了栈与队列的相关内容.本篇博客我们就继续聊数据结构的相关东西,并且所涉及的相关Demo依然使用面向对象语言Swift来表示.本篇博客 ...

  2. 由任意二叉树的前序遍历序列和中序遍历序列求二叉树的思想方法_算法与数据结构基础 - 二叉树(Binary Tree)...

    二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...

  3. C++实现二叉树相关问题(先序遍历,中序遍历,后序遍历,层序遍历,搜索二叉树、平衡二叉树、满二叉树、完全二叉树的判断,最低公共祖先,二叉树的序列化和反序列化)

    目录 题目一 二叉树递归和非递归遍历 题目二 如何完成二叉树的宽度(也叫层序)遍历(常见题目:求一棵二叉树的宽度) 题目四 如何判断一棵二叉树是搜索二叉树(BST)? 题目四 如何判断一棵二叉树是平衡 ...

  4. 数据结构与算法(八)-二叉树(斜二叉树、满二叉树、完全二叉树、线索二叉树)...

    前言:前面了解了树的概念和基本的存储结构类型及树的分类,而在树中应用最广泛的种类是二叉树 一.简介 在树型结构中,如果每个父节点只有两个子节点,那么这样的树被称为二叉树(Binary tree).其中 ...

  5. 【数据结构与算法图文动画详解】终于可以彻底弄懂:红黑树、B-树、B+树、B*树、满二叉树、完全二叉树、平衡二叉树、二叉搜索树...

    1.树简介 1.1基本概念 树是由结点或顶点和边组成的(可能是非线性的)且不存在着任何环的一种数据结构.没有结点的树称为空(null或empty)树.一棵非空的树包括一个根结点,还(很可能)有多个附加 ...

  6. 数据结构与算法:树与二叉树python实现

    最近复习一遍数据结构与算法,做一些笔记,大家可以一起复习. 一.树的一些容易混淆的定义: 结点层:根结点的层定义为1:根的孩子为第二层结点,依此类推: 树的深度(或高度):树中最大的结点层: 满二叉树 ...

  7. python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  8. 《恋上数据结构第1季》二叉树基础、真二叉树、满二叉树、完全二叉树、二叉树的遍历(重点)

    二叉树(Binary Tree) 树(Tree)的基本概念 有序树.无序树.森林 二叉树(Binary Tree) 二叉树的性质 真二叉树(Proper Binary Tree) 满二叉树(Full ...

  9. python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

最新文章

  1. sql注入,预编译和事务
  2. VS2015 MFC属性页孙鑫笔记
  3. POJ 1611 The Suspects (并查集)
  4. 怎么安装aptdaemon模块_自己开发一个React Native 模块
  5. python腐蚀膨胀代码_OpenCV+python实现膨胀和腐蚀的示例
  6. 一代神机落幕!苹果把iPhone 6 Plus列为过时产品,网友吵翻了...
  7. Sino Global Capital CEO:Robinhood暂停GME股票交易凸显了DeFi的重要性
  8. 9-16 原生命令和redis-trib.rb对比
  9. JS实现联欢会抽奖滚动数字效果
  10. DIM-00014: 无法打开windows nt服务控制管理器
  11. 联想IdeapadU410重装系统win10
  12. 大数据可视化技术:可视化技术概述与Echarts入门
  13. 单个正态总体方差的置信区间
  14. 请问投稿中要求上传的author_投稿须知Author lnstruction 解读(中)
  15. vector和list的使用
  16. SPP (Spatial Pyramid Pooling)
  17. 计算机英语过级考试开挂,四六级口语:开挂攻略+考试黄金模板!
  18. 蓝桥杯备赛(五) 双指针,BFS与图论
  19. ITPUB老帖子:将查询结果连接成列表的几个方法
  20. DSST折腾笔记(二):在安卓手机下的移植

热门文章

  1. Set中的add和addAll方法
  2. Nexus+Docker私服+GitLab的一些记录
  3. Bito AI:免费使用 AI 编写代码/修复错误/创建测试用例 Use AI智能聊天 to 10x dev work
  4. 姓“深知”,名“诸葛”,首个企业级深度学习公有云平台养成记
  5. 火车头发布本地html,火车浏览器新浪博客自动调取本地文件发布脚本
  6. Echarts环形图设置空数据样式
  7. linux(CentOS6)下的wifi热点安装配置------hostapd-2.0
  8. Django简单的图书表的增删改查
  9. AVFoundation Programming Guide(官方文档翻译2)Using Assets - 使用Assets
  10. 这个世界上还有一个故事,叫做《大话西游》