namespace DataStructures.Trees { /// /// AVL Tree Node. /// public class AVLTreeNode : BSTNode where T : System.IComparable { private int _height = 0; public AVLTreeNode() : this(default(T), 0, null, null, null) { } public AVLTreeNode(T value) : this(value, 0, null, null, null) { } public AVLTreeNode(T value, int height, AVLTreeNode parent, AVLTreeNode left, AVLTreeNode right) { base.Value = value; Height = height; Parent = parent; LeftChild = left; RightChild = right; } public virtual int Height { get { return this._height; } set { this._height = value; } } public new AVLTreeNode Parent { get { return (AVLTreeNode)base.Parent; } set { base.Parent = value; } } public new AVLTreeNode LeftChild { get { return (AVLTreeNode)base.LeftChild; } set { base.LeftChild = value; } } public new AVLTreeNode RightChild { get { return (AVLTreeNode)base.RightChild; } set { base.RightChild = value; } } } }