/// <summary>
/// 二叉树结构
/// </summary>
public class TreeNode
{
//二叉树数据
public object TreeInfo
{
get;
set;
}
//二叉树左结点
public TreeNode LTreeNode
{
get;
set;
}
//二叉树右结点
public TreeNode RTreeNode
{
get;
set;
}
//创建二叉树
public void CreateTree(TreeNode Node)
{
Node.TreeInfo = Console.ReadLine();
//如果输入为空则跳出
if (Node.TreeInfo==null||string.IsNullOrEmpty(Node.TreeInfo.ToString()))
{
return;
}
//创建左结点实例
Node.LTreeNode = new TreeNode();
CreateTree(Node.LTreeNode);
if (Node.LTreeNode.TreeInfo==null)
{
Node.LTreeNode = null;
}
//创建右结点实例
Node.RTreeNode = new TreeNode();
CreateTree(Node.RTreeNode);
if (Node.RTreeNode.TreeInfo == null)
{
Node.RTreeNode = null;
}
} //先序遍历
public void FirstNode(TreeNode Node)
{
if (Node==null)
{
return;
}
Console.WriteLine(Node.TreeInfo.ToString());
FirstNode(LTreeNode);
FirstNode(RTreeNode);
} //中序遍历
public void MideNode(TreeNode Node)
{
if (Node == null)
{
return;
}
MideNode(LTreeNode);
Console.WriteLine(Node.TreeInfo.ToString());
MideNode(RTreeNode);
} //后序遍历
public void LaterNode(TreeNode Node)
{
if (Node == null)
{
return;
}
LaterNode(LTreeNode);
LaterNode(RTreeNode);
Console.WriteLine(Node.TreeInfo.ToString()); } //层序遍历
public void LevelNode(TreeNode Node)
{
Queue<object> queue=new Queue<object>();
queue.Enqueue(Node);
while (queue.Count > 0)
{
TreeNode Node_1 = queue.Dequeue() as TreeNode;
Console.WriteLine(Node_1.TreeInfo);
if (Node_1.LTreeNode!=null)
{
queue.Enqueue(Node_1.LTreeNode);
}
if (Node_1.RTreeNode != null)
{
queue.Enqueue(Node_1.RTreeNode);
}
}
}
/// 二叉树结构
/// </summary>
public class TreeNode
{
//二叉树数据
public object TreeInfo
{
get;
set;
}
//二叉树左结点
public TreeNode LTreeNode
{
get;
set;
}
//二叉树右结点
public TreeNode RTreeNode
{
get;
set;
}
//创建二叉树
public void CreateTree(TreeNode Node)
{
Node.TreeInfo = Console.ReadLine();
//如果输入为空则跳出
if (Node.TreeInfo==null||string.IsNullOrEmpty(Node.TreeInfo.ToString()))
{
return;
}
//创建左结点实例
Node.LTreeNode = new TreeNode();
CreateTree(Node.LTreeNode);
if (Node.LTreeNode.TreeInfo==null)
{
Node.LTreeNode = null;
}
//创建右结点实例
Node.RTreeNode = new TreeNode();
CreateTree(Node.RTreeNode);
if (Node.RTreeNode.TreeInfo == null)
{
Node.RTreeNode = null;
}
} //先序遍历
public void FirstNode(TreeNode Node)
{
if (Node==null)
{
return;
}
Console.WriteLine(Node.TreeInfo.ToString());
FirstNode(LTreeNode);
FirstNode(RTreeNode);
} //中序遍历
public void MideNode(TreeNode Node)
{
if (Node == null)
{
return;
}
MideNode(LTreeNode);
Console.WriteLine(Node.TreeInfo.ToString());
MideNode(RTreeNode);
} //后序遍历
public void LaterNode(TreeNode Node)
{
if (Node == null)
{
return;
}
LaterNode(LTreeNode);
LaterNode(RTreeNode);
Console.WriteLine(Node.TreeInfo.ToString()); } //层序遍历
public void LevelNode(TreeNode Node)
{
Queue<object> queue=new Queue<object>();
queue.Enqueue(Node);
while (queue.Count > 0)
{
TreeNode Node_1 = queue.Dequeue() as TreeNode;
Console.WriteLine(Node_1.TreeInfo);
if (Node_1.LTreeNode!=null)
{
queue.Enqueue(Node_1.LTreeNode);
}
if (Node_1.RTreeNode != null)
{
queue.Enqueue(Node_1.RTreeNode);
}
}
}
{
static void Main(string[] args)
{
TreeNode Tree = new TreeNode();
Tree.CreateTree(Tree);
Tree.FirstNode(Tree);
Tree.MideNode(Tree);
Tree.LaterNode(Tree);
Tree.LevelNode(Tree); }
}