完成二叉树的判断
来源:互联网 发布:苹果微信网络出错1202 编辑:程序博客网 时间:2024/06/06 00:22
/*
题目:
有一棵二叉树,请设计一个算法判断它是否是完全二叉树。
给定二叉树的根结点root,请返回一个bool值代表它是否为完全二叉树。树的结点个数小于等于500。
*/
public boolean chk(TreeNode root) {
/*
解题思路:采用层次遍历,在遍历过程成考虑3种情况,
1节点的左右孩子不为空,则直接将该节点的左右孩子添加到队列
2节点的左孩子不为空,右孩子为空的,则将左孩子装入队列,并且循环判断队列中的所以节点,
如果队列中的节点存在左孩子或者右孩子则返回false,退出该循环
3节点的左孩子为空,右孩子不为空,则返回false
*/
if(root==null){
return true;
}
boolean flage=true;
LinkedList<TreeNode> queue=new LinkedList<TreeNode>();
queue.add(root);
while(queue.size()!=0){
TreeNode temp=queue.remove();
if(temp.left!=null&&temp.right!=null){//节点左右子树均不为空的情况
queue.add(temp.left);
queue.add(temp.right);
}
if(temp.left!=null&&temp.right==null){//节点左子树不为空,右子树为空的情况
//将该节点装入队列
queue.add(temp.left);
//判断队列中的所有节点是否有左右孩子,如果有则返回false
while(queue.size()!=0){
TreeNode s=queue.remove();
if(s.left!=null||s.right!=null){
flage=false;
break;
}
}
}
if(temp.left==null&&temp.right!=null){//如果存在左子树为空,右子树不为空的情况,则为false
flage=false;
break;
}
}//while
return flage;
}
- 完成二叉树的判断
- 如何判断二叉树是否为完全二叉树?(待完成!!!!!!)
- 完全二叉树的判断
- 平衡二叉树的判断
- 二叉树的递归判断
- 对称二叉树的判断
- 对称的二叉树判断
- 平衡二叉树的判断
- 完全二叉树的判断
- 平衡二叉树的判断
- 对称二叉树的判断
- 完全二叉树的判断
- 完全二叉树的判断
- 二叉查找树的判断
- 二叉查找树的判断
- 平衡二叉树的判断
- 平衡二叉树的判断
- 平衡二叉树的判断
- 快递江湖:一支穿云箭 千军万马来相见
- C/C++_log2000_空白窗口2
- mac 下python3 virtualenv 环境搭建
- jsoup API
- pyspark执行hivesqlstr
- 完成二叉树的判断
- Java Filter过滤机制详解与监听器详解
- Zookeeper原理架构
- 【Quartz】深入Job、JobDetail、JobDataMap、Trigger
- zabbix 报错
- Windows系统alt+数字键 的特殊字符集
- Log4j2实现不同线程不同级别日志输出到不同的文件中
- POJ
- 【Quartz】Spring3.2.9+Quqrtz2.2.1实现定时实例