/// <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);
              }
          }
        }

解决方案 »

  1.   

    忘记了 我贴出来把class Program
        {
            static void Main(string[] args)
            {
                TreeNode Tree = new TreeNode();
                Tree.CreateTree(Tree);
                Tree.FirstNode(Tree);
                Tree.MideNode(Tree);
                Tree.LaterNode(Tree);
                Tree.LevelNode(Tree);        }
        }
      

  2.   

    CreateTree方法中无限调用该方法,无法跳出。递归写的有问题