protected void Add(ref LinkedListBinaryTree <T> child, TreeNode <T> treeNode) { if (child != null) { throw new Exception("Child is existed"); } LinkedListBinaryTree <T> tempTree = treeNode as LinkedListBinaryTree <T>; if (tempTree == null) { tempTree = new LinkedListBinaryTree <T>(treeNode.Value); TreeNode <T> .Copy(treeNode, tempTree); } child = tempTree; child.level = level + 1; child.parent = this; if (depth == 1) { depth = 1; BubbleDepth(); } ++count; BubbleCount(1); }
public override TreeNode <T> Clone() { LinkedListBinaryTree <T> cloneTree = new LinkedListBinaryTree <T>(this.Value); if (this.parent == null) { cloneTree.count = this.count; cloneTree.depth = this.depth; cloneTree.left = this.left; cloneTree.left = (LinkedListBinaryTree <T>) this.left.Clone(); cloneTree.right = (LinkedListBinaryTree <T>) this.right.Clone(); cloneTree.left.parent = cloneTree; cloneTree.right.parent = cloneTree; } else { TreeNode <T> .Copy(this, cloneTree); } return(cloneTree); }