static void Main(string[] args) { Node root = new Node(); Node c1 = new Node(); Node c2 = new Node(); root.left = c1; root.right = c2; Node c11 = new Node(); c1.left = c11; Node c112 = new Node(); c11.right = c112; Program p = new Program(); Console.WriteLine(p.isBalanced(root)); Console.Read(); } public int GetMaxHeight(Node root) { if (root == null) return 0; int max = 1 + Math.Max(this.GetMaxHeight(root.left), this.GetMaxHeight(root.right)); return max; } public int GetMinHeight(Node root) { if (root == null) return 0; int min = 1 + Math.Min(this.GetMinHeight(root.left), this.GetMinHeight(root.right)); return min; } public bool isBalanced(Node root) { int max = this.GetMaxHeight(root); int min = this.GetMinHeight(root); if (max - min > 1) return false; else return true; } } public class Node { public int value; public Node left; public Node right; }