zoukankan      html  css  js  c++  java
  • 二叉树遍历:先序、中序、后序和层次遍历

    public class BinaryNode
        
    {
            
    public int Data;
            
    public BinaryNode Left;
            
    public BinaryNode Right;
        }



    public class BinaryTree
        
    {
            
    public void PreOrder(BinaryNode node)
            
    {
                
    if (node != null)
                
    {
                    Console.WriteLine(node.Data);

                    PreOrder(node.Left);
                    PreOrder(node.Right);
                }

            }


            
    public void MidOrder(BinaryNode node)
            
    {
                
    if (node != null)
                
    {
                    MidOrder(node.Left);
                    Console.WriteLine(node.Data);
                    MidOrder(node.Right);
                }

            }


            
    public void AfterOrder(BinaryNode node)
            
    {
                
    if (node != null)
                
    {
                    AfterOrder(node.Left);
                    AfterOrder(node.Right);
                    Console.WriteLine(node.Data);
                }

            }


            
    public void LayerOrder(BinaryNode node)
            
    {
                
    if (node != null)
                
    {
                    CurrentLayer(node.Left);
                    CurrentLayer(node.Right);

                    LayerOrder(node.Left);
                    LayerOrder(node.Right);
                }

            }


            
    private void CurrentLayer(BinaryNode node)
            
    {
                
    if (node != null)
                
    {
                    Console.WriteLine(node.Data);
                }

            }


        }


    测试:
                BinaryNode n1 = new BinaryNode();
                n1.Data 
    = 27;

                BinaryNode n2 
    = new BinaryNode();
                n2.Data 
    = 83;

                BinaryNode n3 
    = new BinaryNode();
                n3.Data 
    = 123;

                BinaryNode n4 
    = new BinaryNode();
                n4.Data 
    = 98;

                BinaryNode n5 
    = new BinaryNode();
                n5.Data 
    = 94;

                BinaryNode n6 
    = new BinaryNode();
                n6.Data 
    = 48;

                BinaryNode n7 
    = new BinaryNode();
                n7.Data 
    = 61;

                n1.Left 
    = n2;
                n1.Right 
    = n3;
                n1.Left.Left 
    = n4;
                n1.Left.Right 
    = n5;
                n1.Right.Right 
    = n6;
                n1.Right.Right.Left 
    = n7;

                BinaryTree bTree 
    = new BinaryTree();

                Console.WriteLine(
    "Pre Order Binary Tree:");
                bTree.PreOrder(n1);

                Console.WriteLine(
    "Midd Order Binary Tree:");
                bTree.MidOrder(n1);

                Console.WriteLine(
    "After Order Binary Tree:");
                bTree.AfterOrder(n1);

                Console.WriteLine(
    "Layer Order Binary Tree:");
                bTree.LayerOrder(n1);

                Console.ReadLine();

  • 相关阅读:
    Android下加载GIF图片
    拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现
    阿里巴巴矢量库
    ActiveAndroid 管理数据库
    利用box-shadow制作loading图
    适用于移动端的地址选择器
    常用的不易记忆的css自定义代码
    关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法
    JavaScript之函数柯里化
    CSS3实现图片渐入效果
  • 原文地址:https://www.cnblogs.com/silva/p/1091806.html
Copyright © 2011-2022 走看看