using System
;
using System
.Collections
.Generic
;
using System
.Linq
;
using System
.Text
;
using System
.Threading
.Tasks
;
namespace DataList
.Scrips
.Tree
{
public class TreeNode<T
>
{
public T data
;
public TreeNode
<T
> lChild
;
public TreeNode
<T
> rChild
;
public TreeNode(T _data
)
{
data
= _data
;
lChild
= null;
rChild
= null;
}
public TreeNode(TreeNode
<T
> _lchild
,TreeNode
<T
> _rchild
)
{
data
= default(T
);
lChild
= _lchild
;
rChild
= _rchild
;
}
public TreeNode(T _data
, TreeNode
<T
> _lchild
, TreeNode
<T
> _rchild
)
{
data
= _data
;
lChild
= _lchild
;
rChild
= _rchild
;
}
public TreeNode()
{
data
= default(T
);
lChild
= null;
rChild
= null;
}
public T Data
{
get { return data
; }
set { data
= value; }
}
public TreeNode
<T
> LChild
{
get { return lChild
; }
set { lChild
= value; }
}
public TreeNode
<T
> RChild
{
get { return rChild
; }
set { rChild
= value; }
}
}
class BinaryTree<T
>
{
TreeNode
<T
> root
;
public TreeNode
<T
> Head
{
get { return root
; }
set { root
= value; }
}
public BinaryTree()
{
root
= null;
}
public BinaryTree(TreeNode
<T
> head
)
{
root
= head
;
}
public BinaryTree(T value)
{
root
=new TreeNode<T>(value);
}
public BinaryTree(T value, TreeNode
<T
> _lchild
, TreeNode
<T
> _rchild
)
{
TreeNode
<T
> p
= new TreeNode<T>(value,_lchild
,_rchild
);
root
= p
;
}
public TreeNode
<T
> GetRoot()
{
return root
;
}
public TreeNode
<T
> GetLChild(TreeNode
<T
> Lp
)
{
return Lp
.lChild
;
}
public TreeNode
<T
> GetRChild(TreeNode
<T
> Rp
)
{
return Rp
.rChild
;
}
public void InsertLChild(T value, TreeNode
<T
> p
)
{
TreeNode
<T
> temp
= new TreeNode<T>(value);
temp
.lChild
= p
.lChild
;
p
.lChild
= temp
;
}
public void insertRChild(T value, TreeNode
<T
> p
)
{
TreeNode
<T
> temp
= new TreeNode<T>();
temp
.rChild
= p
.rChild
;
p
.rChild
= temp
;
}
public TreeNode
<T
> DeletLChild(TreeNode
<T
> p
)
{
if (p
== null)
{
Console
.WriteLine("p为空节点,不做处理");
}
TreeNode
<T
> temp
= null;
if (p
.lChild
!= null)
{
temp
= p
.lChild
;
p
.lChild
= null;
}
return temp
;
}
public TreeNode
<T
> DeletRChild(TreeNode
<T
> p
)
{
if (p
== null)
{
Console
.WriteLine("p为空节点,不做处理");
}
TreeNode
<T
> temp
= null;
if (p
.rChild
!= null)
{
temp
= p
.rChild
;
p
.rChild
= null;
}
return temp
;
}
public bool IsLeaf(TreeNode
<T
> p
)
{
if (p
!= null && p
.rChild
!= null && p
.lChild
!= null)
{
return true;
}
else
{
return false;
}
}
public bool IsEmpty()
{
if (root
== null)
{
return true;
}
else
return false;
}
public void ClearTree()
{
root
= null;
}
public void PerOrder(TreeNode
<T
> p
)
{
if (p
== null)
{
return;
}
Console
.WriteLine(p
.data
);
PerOrder(p
.lChild
);
PerOrder(p
.rChild
);
}
public void InOrder(TreeNode
<T
> p
)
{
if (p
== null)
{
return;
}
InOrder(p
.lChild
);
Console
.WriteLine(p
.data
);
InOrder(p
.rChild
);
}
public void PostOrder(TreeNode
<T
> head
)
{
if (head
== null) { return; }
PostOrder(head
.lChild
);
PostOrder(head
.rChild
);
Console
.WriteLine(head
.data
);
}
}
}
转载请注明原文地址: https://mac.8miu.com/read-491818.html