判断一棵树是否是满二叉树

  • 1.满二叉树定义
  • 2.如何判断一棵树是否是满二叉树
  • 3.代码

1.满二叉树定义

除最后一层无子节点外,其他层的所有节点都有两个子节点的二叉树就是满二叉树。如下图所示:

2.如何判断一棵树是否是满二叉树

如果一棵树的高度为 n ,他的所有节点个数是 2^n-1,那么这棵二叉树是满二叉树

3.代码

//定义树
public class Node {public int data;public Node leftNode;public Node rightNode;public Node() {}public Node(int data) {this.data=data;}public Node(int data, Node leftNode, Node rightNode) {this.data = data;this.leftNode = leftNode;this.rightNode = rightNode;}
}//定义判断是否是满二叉树的信息的类
public class Info {public int height;public int nodes;public Info(int height,int nodes) {this.height=height;this.nodes=nodes;}
}//判断是否是满二叉树
public class Tree {private Node root;//判断一棵树是否是满二叉树public boolean isF() {return isF(root);}public static boolean isF(Node head) {//如果是空树,则就是满二叉树,返回trueif(head==null) {return true;}//创建树的信息的对象Info data=f(head);//判断是否是满二叉树 条件:nodes=2^height-1return data.nodes==((1<<data.height)-1);}public static Info f(Node x) {//如果某个节点为空,则返回高度为0,节点数为0if(x==null) {return new Info(0,0);}//递归遍历左子树Info leftData=f(x.leftNode);//递归遍历右子树Info rightData=f(x.rightNode);//计算树的高度[左子树和右子树的最大值再加1]int height=Math.max(leftData.height, rightData.height)+1;//计算节点个数[左子树的节点个数加右子树的节点个数再加1]int nodes=leftData.nodes+rightData.nodes+1;//返回树的高度和节点个数return new Info(height,nodes);}
}//测试类
public class Test {public static void main(String[] args) {Tree tree=new Tree();Node node=new Node(6,new Node(4,new Node(3),new Node(5)),new Node(8,new Node(7),new Node(9)));    boolean d=tree.isF(node);System.out.println("这棵树是不是满二叉树:"+ d);}
}

如何判断一棵树是否是满二叉树相关推荐

  1. 判断一棵树是否是满二叉树

    满二叉树即为二叉树所有层都是满的,每一个节点都有左右孩子,除了叶节点. #include <iostream> #include <queue> using namespace ...

  2. 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树

    数据结构与算法之判断一棵树是否为搜索二叉树.判断一棵树是否是完全二叉树 目录 判断一棵树是否为搜索二叉树 判断一棵树是否是完全二叉树 1. 判断一棵树是否为搜索二叉树 概念:搜索树就是中序遍历的结果是 ...

  3. 判断一棵树是否为排序二叉树(二叉搜索树)

    问题:判断一棵树是否为排序二叉树(二叉搜索树) 思路:二叉排序树的中序遍历为一递增的排序,若果不满足这一条件,则,不是二叉树 程序实现: #include <iostream> #incl ...

  4. 判断一棵树是否是搜索二叉树 判断一棵树是否是完全二叉树

    package class_04;import java.util.LinkedList; import java.util.Queue; /*** * 判断一棵树是否是搜索二叉树* 判断一棵树是否是 ...

  5. 判断一棵树是否为完全二叉树的算法c语言_[二叉树的面试算法](六)之二叉树结构判断-相关题型总结(4题)...

    在线oj练习地址 判断两棵二叉树是否相同_leetcode100 判断一棵树是否是平衡二叉树_leetcode110 翻转二叉树_leetcode226 判断一棵树是否为对称二叉树_leetcode1 ...

  6. 数据结构面试题/判断一棵树是否是完全二叉树

    二叉树: 1.满二叉树:在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶子节点都在同一层上. 2.完全二叉树:如果一棵具有N个结点的二叉树的结构与满二叉树的前N个结点的结构相同,称为完 ...

  7. 判断一棵树是否是完全二叉树

    1.[基础题]–判断一棵树是否是完全二叉树.提示:层序遍历变型题. (1)基础知识 [二叉树]:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子. [满二叉树]:高度为N ...

  8. 数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡二叉树

    数据结构与算法之二叉树的序列化和反序列化及判断一棵树是否为平衡而二叉树 目录 二叉树的序列化和反序列化 判断一棵树是否为平衡而二叉树 1. 二叉树的序列化和反序列化 1. 递归版本序列化和反序列化 代 ...

  9. 数据结构-判断一棵树是否为二叉排序树

    判断一棵树是否为二叉排序树 二叉排序树的性质:如果按照中序遍历的方式遍历二叉排序树的话,遍历的数字是呈递增趋势的.我们根据这个思路去判断是否为二叉排序树. 思路: ①建树 ②设立一个变量去记录当前已经 ...

最新文章

  1. 自己收集的一些技术blog-javascript
  2. cdn与服务器的关系_IPFS是一个天生的CDN,将会在全世界进行内容加速
  3. jvm性能调优 - 21案例实战_百万级用户的在线系统如何基于G1垃圾回收器优化性能
  4. 淘汰算法LRU是什么?
  5. 用windows api 计算文件的md5值
  6. react中对props.children进行操作
  7. HttpServletRequest中文乱码
  8. [Excel] 数据透视表
  9. 适合初学者的 10 大机器学习项目
  10. html5视频 小马哥,小码哥-HTML5培训之进击前端的动画狮!
  11. 微信公众号开发实战 | 01:环境配置
  12. HSV(HSB)和HSL颜色空间
  13. DOS控制台及其常用命令
  14. 隔行扫描, 逐行扫描
  15. 蓝屏0x000000A5解决方案
  16. css网页favicon_网站常用的favicon.ico文件详解
  17. Chapter 4 Naive Bayes and Sentiment Classification
  18. 计算机新职业有哪些,16个新职业来了,有你想从事的吗?
  19. 助力智能制造,TUV莱茵亮相2018工博会
  20. mac vbox 共享文件夹_mac virtualbox 设置共享剪切板和目录

热门文章

  1. CART分类回归树算法
  2. C语言的access函数的用法
  3. 运行时异常和非运行时异常(一般异常)的区别
  4. 为智能汽车装上“云发动机”
  5. Win10 wsl-安装教程
  6. 信道估计(channel estimation)图解——从SISO到MIMO原理介绍
  7. 【头歌】顺序表的基本操作
  8. BUUCTF-WarmUp
  9. java Exception问题:unhandled exception:java.lang.Exception
  10. forwardRef的使用