3. Given the following tree structure and code, what will be the output?
class TreeNode {
public int val;
public TreeNode left, right;
public TreeNode(int v) { val = v; }
}
// Tree:
// 1
// / \
// 2 3
// /
// 4
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
bool result = IsBalanced(root);
Console.WriteLine(result);
bool IsBalanced(TreeNode node) {
if (node == null) return true;
int leftHeight = Height(node.left);
int rightHeight = Height(node.right);
if (Math.Abs(leftHeight - rightHeight) > 1) return false;
return IsBalanced(node.left) && IsBalanced(node.right);
}
int Height(TreeNode node) {
if (node == null) return 0;
return 1 + Math.Max(Height(node.left), Height(node.right));
}