ツリーが完全な二分木であるかどうかを判別します

ここに画像の説明を挿入

問題解決のアイデア

ループ内で次の操作を実行します

ここに画像の説明を挿入

実装コード

実装コード2

public boolean isComplete() {
    
    
		if (root == null) return false;
		Queue<Node<E>> queue = new LinkedList<>();
		queue.offer(root);
		
		boolean leaf = false;
		while (!queue.isEmpty()) {
    
    
			Node<E> node = queue.poll();
			if (leaf && !node.isLeaf()) return false;

			if (node.left != null) {
    
    
				queue.offer(node.left);
			} else if (node.right != null) {
    
    
				return false;
			}
			
			if (node.right != null) {
    
    
				queue.offer(node.right);
			} else {
    
     // 后面遍历的节点都必须是叶子节点
				leaf = true;
			}
		}
		
		return true;
	}
	

おすすめ

転載: blog.csdn.net/pjh88/article/details/114759346