数据结构----二叉树遍历层序遍历

    xiaoxiao2025-06-22  10

    二叉树遍历的核心问题:二维结构的线性化 队列实现:遍历从根结点开始,首先将根结点入队,然后开始执行循环:结点出队,访问该结点,其左右儿子入队。

    void LevelOrderTraversal(BinTree BT) { Queue Q; BinTree T; if (!BT) return;/* 若是空树则直接返回*/ Q=CreateQueue(Maxsize);//创建并初始化队列Q Add(Q,BT); while(!isemptyQ(Q)) { T=deleteQ(Q); printf("%d\n",T->data);//访问取出队列的结点 if( T->Left) Add(Q,T->Left); if(T->Right) Add(Q,T->Right); } }

    尝试用堆栈的方式解决遍历问题:

    void LevelOrderTraversal(BinTree BT) { Stack S; BinTree T; if(!BT) return ; S=Createstack(Maxsize); Push(S,BT) while(!isempty(S)) { T=pop(S); cout<<T->data; if(T->Right) Push(S,T->Right); if(T->Left)Push(S,T->Left); } }
    最新回复(0)