您当前的位置: 首页 >  c#

光怪陆离的节日

暂无认证

  • 0浏览

    0关注

    1003博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#实现二叉树非递归中序遍历程序

光怪陆离的节日 发布时间:2022-06-27 16:57:31 ,浏览量:0

本文讲解C#实现二叉树非递归中序遍历程序

1、非递归中序遍历 /// /// 非递归中序遍历 /// /// static void InOrder2(BiTNode T) { SqStack S = new SqStack(); S.data = new BiTNode[MaxSize]; InitStack(ref S); BiTNode p = T; while (p!=null||!StackEmpty(S)) { if (p != null) { Push(ref S, p); p = p.lchild; } else { PoP(ref S, ref p); visit§; p = p.rchild; }

        }


    }

2、节点访问 /// /// 结点值的输出 /// static void visit(BiTNode T) { Console.Write(T.data+" "); } 3、栈结构的实现 /// /// 栈定义 /// public struct SqStack { public BiTNode[] data; public int top;//栈顶

    }
    /// 
    /// 判断栈是否为空
    /// 
    /// 
    /// 
    static bool StackEmpty(SqStack S)
    {
        if (S.top == -1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    /// 
    /// 栈初始化
    /// 
    /// 
    static void InitStack(ref SqStack S)
    {
        S.top = -1;
    }
    /// 
    /// 压栈
    /// 
    /// 
    /// 
    static bool Push(ref SqStack S, BiTNode e)
    {
        if (S.top >= MaxSize - 1)
        {
            return false;
        }
        S.top = S.top + 1;
        S.data[S.top] = e;//先加1,再进栈
        return true;
    }
    /// 
    /// 出栈
    /// 
    /// 
    /// 
    /// 
    static bool PoP(ref SqStack S, ref BiTNode e)
    {
        if (S.top == -1) { return false; }
        e = S.data[S.top--];//出栈
        return true;
    }
    /// 
    /// 
    ///读取栈顶元素
    /// 
    /// 
    /// 
    /// 
    bool GetTop(ref SqStack S, ref BiTNode e)
    {

        if (S.top == -1) { return false; }
        e = S.data[S.top];//读取元素
        return true;

    }

5、main函数测试 public const int MaxSize = 50; static void Main(string[] args) { BiTNode T = new BiTNode() ; int x=0; //创建二叉树 T.data = 1; T.lchild= new BiTNode(); T.lchild.data = 2; T.rchild = new BiTNode(); T.rchild.data = 3; T.lchild.rchild=new BiTNode(); T.lchild.rchild.data = 4; T.lchild.rchild.lchild= new BiTNode(); T.lchild.rchild.lchild.data = 6; T.rchild.rchild = new BiTNode(); T.rchild.rchild.data = 5; Console.WriteLine(“先序遍历的值:”); PreOrder(T); Console.WriteLine(); Console.WriteLine(“中序遍历的值:”); InOrder(T); Console.WriteLine(); Console.WriteLine(“后序遍历的值:”); PostOrder(T); Console.WriteLine(); Console.WriteLine(“非递归中序遍历的值:”); InOrder2(T); Console.WriteLine(); Console.WriteLine(“层次遍历的值:”); LevelOrder(T); Console.ReadLine();

    }
关注
打赏
1665731445
查看更多评论
立即登录/注册

微信扫码登录

0.0385s