package com.interview.algorithms.tree; import com.interview.basics.model.collection.list.ArrayList; import com.interview.basics.model.collection.list.List; import com.interview.basics.model.tree.BinaryTree; import com.interview.basics.model.tree.BinaryTreeNode; import java.util.Iterator; /** * Created with IntelliJ IDEA. * User: stefanie * Date: 7/17/14 * Time: 9:49 AM */ public class C5_10_BalancedTreeProver { public static boolean isBalanced(BinaryTree tree){ List<BinaryTreeNode> current = new ArrayList<>(); List<BinaryTreeNode> children = new ArrayList<>(); int fullNum = 1; children.add(tree.getRoot()); while(children.size() > 0 || current.size() > 0){ current.clear(); current.addAll(children); children.clear(); Iterator<BinaryTreeNode> itr = current.iterator(); while(itr.hasNext()){ BinaryTreeNode node = itr.next(); if(node.left != null) children.add(node.left); if(node.right != null) children.add(node.right); } if(current.size() < fullNum && !children.isEmpty()) return false; fullNum *= 2; } return true; } }