判断完全二叉树

Posted 月屯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断完全二叉树相关的知识,希望对你有一定的参考价值。

思路:层序遍历二叉树
如果一个结点,左右孩子都不为空,则pop该节点,将其左右孩子入队列
如果一个结点,左孩子为空,右孩子不为空,则该树一定不是完全二叉树
如果一个结点,左孩子不为空,右孩子为空;或者左右孩子都为空,则该节点之后的队列中的结点都为叶子节点;该树才是完全二叉树,否则返回false。

    public static class Node 
		public int value;
		public Node left;
		public Node right;
 
		public Node(int data) 
			this.value = data;
		
	
	public static boolean isCBT(Node head) 
		if (head == null) 
			return true;
		
		Queue<Node> queue = new LinkedList<Node>();
		boolean leaf = false;
		Node l = null;
		Node r = null;
		queue.offer(head);
		while (!queue.isEmpty()) 
			head = queue.poll();
			l = head.left;
			r = head.right;
			if ((leaf && (l != null || r != null)) || (l == null && r != null)) 
				return false;//当前结点不是叶子结点且之前结点有叶子结点 || 当前结点有右孩子无左孩子
			
			if (l != null) 
				queue.offer(l);
			
			if (r != null) 
				queue.offer(r);
			 else 
				leaf = true;//无孩子即为叶子结点
			
		
		return true;
	

参考大佬的

以上是关于判断完全二叉树的主要内容,如果未能解决你的问题,请参考以下文章

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

每日一道面试题-完全二叉树的判断

二叉树oj ----->判断二叉树是否为完全二叉树

NC60 判断一棵二叉树是否为搜索二叉树和完全二叉树

急急~判断一棵二叉树是满二叉树的算法!

二叉树——判断一棵树是否是完全二叉树