Get the App
SLTechnology News&Howtos  ›  Database  › 

Non-recursive traversal algorithm of middle order, first order and post-order traversal of binary tree (using stack, implemented by loop)

Shulou Source: shulou.com Published: 2022-06-01 11:14:43 09月18日 Update

Typedef struct TreeNode * BinTree;typedef BinTree Position; struct TreeNode {ElementType Data; BinTree Left; BinTree Right;}; BinTree BT;void InOrderTraversal (BinTree BT) / / Middle order traversal non-recursive traversal algorithm (using stack, implemented in loops) {BinTree Tunable BT; Stack S=CreakStack (MaxSize) / / create and initialize the stack S while (T | |! IsEmpty (S)) {while (T) {/ / keep to the left and push the nodes along the way into the stack Push (SMagart T); Tunable T-> Left;} if (! IsEmpty (S)) {T=Pop (S) / / Node pop-up stack printf ("% 5d", T-> Data); / (access) print node Tendt-> Right;// turn to the right subtree} void PreOrderTraversal (BinTree BT) / / preorder traversal non-recursive traversal algorithm (using stack, implemented with loop) {BinTree Tunable BT; Stack S=CreakStack (MaxSize) / / create and initialize the stack S while (T | |! IsEmpty (S)) {while (T) {/ / keep to the left and push the nodes along the way into the stack printf ("% 5d", T-> Data); / / (access) print node Push (SMagol T); tweak T-> Left } if (! IsEmpty (S)) {T=Pop (S); / / Node pop-up stack Tendt-> Right / / turn to the right subtree} void PostOrderTraversal (BinTree BT) / / Post-order traversal non-recursive traversal algorithm (using stack, implemented by loop) {BinTree T BT; Stack S = CreatStack (MaxSize); / * create and initialize stack slots / Stack Q = CreatStack (MaxSize) / * create and initialize stack Q to output reverse * / while (T | |! IsEmpty (S)) {while (T) {/ * keep to the right and push the nodes along the way into the stack * / Push (SMagart T); Push (QMague T); / * push the traversed nodes into the stack for reverse * / T = T-> Right } if (! IsEmpty (S)) {T = Pop (S); / * Node pop-up stack * / T = T-> Left; / * turn to left subtree * /}} while (! IsEmpty (Q)) {T = Pop (Q); printf ("% 5d", T-> Data); / * (access) print node * /}}

Tags: Stack node algorithm recursion loop subtree and output Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Linux Redmi vpn Apple Huawei