C#二叉树的先序遍历,中序遍历,后序遍历。。。。。层次遍历

最后我们来说说二叉树的遍历,学过数据结构的都知道二叉树的先序遍历,中序遍历,后序遍历,那么我们在实际代码中应该怎么做呢??

不知道大家有没有留意我说过的一句话,在树中最好用的工具就是递归算法。

这三个概念我就不多说了, 理解了这代码真的很简单,大家多看几遍就懂了。。。。

 //递归先序遍历
        public void PreOrderShow(TreeNode node)
        {
            if (node != null)
            {
                Console.Write(node.data);


                PreOrderShow(node.lchild);
                PreOrderShow(node.rchild);
            }


        }


        //递归中序遍历
        public void MidOrderShow(TreeNode node)
        {
            if (node != null)
            {
                MidOrderShow(node.lchild);
                Console.Write(node.data);
                MidOrderShow(node.rchild);
            }
        }


        //递归后序遍历
        public void PostOrderShow(TreeNode node)
        {
            if (node != null)
            {
                PostOrderShow(node.lchild);
                PostOrderShow(node.rchild);
                Console.Write(node.data);
            }

        }

相信你也觉得这很简单。。

----------------------------------------------------------------------------------------------------------------------

我们又来说说二叉树的层次遍历,偶尔会用得上

所谓层次遍历,就像字面意思一样,比较low的说法就是一层一层的遍历,然后再遍历下一层

这里我们用到队列来实现,话不多说。。

 //层次遍历
        public  void LevelOrderShow(TreeNode node)
        {
            if (node == null)
                return;


            Queue queue = new Queue();
            queue.Enqueue(node);


            while (queue.Any())
            {
                var item = queue.Dequeue();
                System.Console.Write(item.data);


                if (item.lchild != null)
                {
                    queue.Enqueue(item.lchild);
                }


                if (item.rchild != null)
                {
                    queue.Enqueue(item.rchild);
                }
            }
        }

你可能感兴趣的:(C#)