二叉树——判断一棵树是否是完全二叉树
Posted SkyeAngel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树——判断一棵树是否是完全二叉树相关的知识,希望对你有一定的参考价值。
二叉树按层遍历
判断条件:结点的左右孩子只有4种情况
其中的三种情况有特例
条件1.结点有右孩子,没有左孩子,直接返回false
条件2.结点左右孩子不全(有左没右,左右都没有),则后面遇到的所有结点,都必须是叶节点
只要不违反1.2的,就是完全二叉树
public class IsCBTTree { public static boolean isCBTTree(Tree tree){ if(tree == null) return true; //是否开启叶子结点,之后如果遇到不是叶子结点时,就不是完全二叉树 boolean isLeaf = false; Queue<Tree> queue = new LinkedList<>(); queue.offer(tree); while(!queue.isEmpty()){ tree = queue.poll(); Tree l = tree.left; Tree r = tree.right; if((l == null && r != null) || (isLeaf && (l != null || r != null))){ return false; } if(l != null){ queue.offer( l ); } if(r != null){ queue.offer( r ); } if(l == null || r == null){ isLeaf = true; } } return true; } }
以上是关于二叉树——判断一棵树是否是完全二叉树的主要内容,如果未能解决你的问题,请参考以下文章