using System; using System.Collections.Generic; public interface INode : IComparable where K : IComparable { K Key { get; } } public interface IBTNode where C : IBTNode { C Parent { get; set; } C Left { get; set; } C Right { get; set; } } public interface IBSTNode : IBTNode, INode where C : IBSTNode where K : IComparable { } public interface IAVLNode : IBSTNode where C : IAVLNode where K : IComparable { int Balance { get; set; } } class X { public static void Main () { } }